1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tompeppa-gofound

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
api.md 7.6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 08:24 0850521

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.
  • POST /api/index
{
  "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 Да Идентификатор документа.
  • POST /api/remove
{
  "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.

Highlight

После настройки будут выделены соответствующие ключевые слова с использованием префикса preTag и суффикса postTag.

Поле Описание
preTag Префикс ключевого слова
postTag Суффикс ключевого слова
  • Пример
{
  "query": "上海哪里好玩",
  "page": 1,
  "limit": 10,
  "order": "desc",
  "highlight": {
    "preTag": "<span style='color:red'>",
    "postTag": "</span>"
  }
}
  • POST /api/query
{
  "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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/tompeppa-gofound.git
git@api.gitlife.ru:oschina-mirror/tompeppa-gofound.git
oschina-mirror
tompeppa-gofound
tompeppa-gofound
main