API
После запуска gofound отслеживает один TCP-порт и принимает поисковые запросы от клиентов. Для обработки HTTP-запросов используется фреймворк gin.
Поддержка нескольких баз данных
С версии 1.1 поддерживается несколько баз данных. В API-интерфейсе можно указать базу данных с помощью параметра get.
Если параметр не указан, по умолчанию используется база данных default.
Пример: api/index?database=db1. Остальные параметры post остаются неизменными.
При указании несуществующей базы данных будет автоматически создана новая база данных. Чтобы удалить её, просто удалите каталог этой базы данных и перезапустите gofound.
Увеличение или изменение индекса
Необходимо указать имя базы данных в параметре query database=default.
Интерфейс | /api/index |
---|---|
Метод запроса | POST |
Тип запроса | application/json |
Поле | Тип | Обязательное | Описание |
---|---|---|---|
id | uint32 | Да | Идентификатор документа, должен быть уникальным. При повторении идентификатора существующий документ будет заменён. |
text | string | Да | Текст для индексации. |
document | object | Да | Сопутствующие данные документа в формате JSON. Будут возвращены без изменений при поиске. |
Параметры запроса (params-data)
Поле | Тип | Обязательное | Описание |
---|---|---|---|
database | string | Нет | Имя базы данных. Если не указано, используется значение по умолчанию default. |
{
"id": 88888,
"text": "深圳北站",
"document": {
"title": "阿森松岛所445",
"number": 223
}
}
curl -H "Content-Type:application/json" -X POST --data '{"id":88888,"text":"深圳北站","document":{"title":"阿森松岛所445","number":223}}' http://127.0.0.1:5678/api/index?database=default
{
"state": true,
"message": "success"
}
Пакетное увеличение или изменение индекса
Процесс аналогичен добавлению одного индекса, но необходимо использовать массив для передачи нескольких объектов JSON в качестве параметров. Например:
[
{
"id": 88888,
"text": "深圳北站",
"document": {
"title": "阿森松岛所445",
"number": 223
}
},
{
"id": 22222,
"text": "北京东站",
"document": {
"title": "123123123",
"number": 123123
}
}
]
Удаление индекса
Аналогично другим интерфейсам, необходимо указать имя базы данных в параметрах запроса database=default.
Интерфейс | /api/remove |
---|---|
Метод запроса | POST |
Тип запроса | application/json |
Поле | Тип | Обязательное | Описание |
---|---|---|---|
id | uint32 | Да | Идентификатор документа. |
{
"id": 88888
}
curl -H "Content-Type:application/json" -X POST --data '{"id":88888}' http://127.0.0.1:5678/api/remove?database=default
{
"state": true,
"message": "success"
}
Запрос индекса
GoFound предоставляет способ поиска по тексту. В отличие от других NoSQL баз данных, GoFound не поддерживает другие виды запросов к документам.
Интерфейс | /api/query |
---|---|
Метод запроса | POST |
Тип запроса | application/json |
Поле | Тип | Обязательное | Описание |
---|---|---|---|
query | string | Да | Ключевое слово для поиска. Используется оператор OR. |
page | int | Нет | Номер страницы, по умолчанию 1. |
limit | int | Нет | Количество возвращаемых документов, по умолчанию 100. Ограничение отсутствует, но рекомендуется не превышать 1000, так как это может замедлить скорость и увеличить использование памяти. |
order | string | Нет | Порядок сортировки, значения asc и desc, по умолчанию desc. Сортировка выполняется по идентификатору, а затем по оценке релевантности. |
highlight | object | Нет | Выделение ключевых слов. |
scoreExp | string | Нет | Формула для расчёта оценки релевантности на основе полей документа. Например, *score+[document.hot]*10, где score — оценка релевантности ключевого слова, а document.hot — поле hot в документе. |
Параметры запроса (params-data)
Поле | Тип | Обязательное | Описание |
---|---|---|---|
database | string | Нет | Имя базы данных, если не указано, используется default. |
После настройки будут выделены соответствующие ключевые слова с использованием префикса preTag и суффикса postTag.
Поле | Описание |
---|---|
preTag | Префикс ключевого слова |
postTag | Суффикс ключевого слова |
{
"query": "上海哪里好玩",
"page": 1,
"limit": 10,
"order": "desc",
"highlight": {
"preTag": "<span style='color:red'>",
"postTag": "</span>"
}
}
{
"query": "深圳北站",
"page": 1,
"limit": 10,
"order": "desc"
}
curl -H "Content-Type:application/json" -X POST
``` **Запрос:**
{ "query": "深圳北站", "page": 1, "limit": 10, "order": "desc" }
**Ответ:**
Объект запроса: «深圳北站».
Страница: 1.
Ограничение: 10.
Сортировка: по убыванию. ### Запрос параметров
| Поле | Тип | Обязательное | Описание |
|-----|------|----------|-------|
| q | string | ключевое слово |
### Запрос
`curl http://127.0.0.1:5678/api/word/cut?q=上海和深圳哪个城市幸福指数高`
### Ответ
```json
{
"state": true,
"message": "success",
"data": [
"上海",
"深圳",
"哪个",
"город",
"счастье",
"индекс"
]
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )