FlexSearch — поисковый движок с json rest api, написанный на .NET C#. Подобные движки используются при сложном поиске по базе документов. На данный момент доступны два вида поиска: полнотекстовый и по точному совпадению. FlexSearch также является файловой бд. Документы хранятся в формате json.
Данная работа является моим дипломным проектом.
Для запуска на сервере с помощью docker скачайте контейнер из dockerhub https://hub.docker.com/r/bahtenkov/searchapi и запустите контейнер. По умолчанию он настроен на порт 5001.
Пусть наш движок будет размещён на example.com.
Получить список всех баз данных
Получить список всех индексов в базе данных databaseName
Добавить объект в базу данных databaseName в индекс indexName
Получить все записи из индекса indexName, который находится в базе данных databaseName
Получить запись с указанным id из индекса indexName, который находится в базе данных databaseName
Переименовать индекс на newName
Обновить документ с Id = id из базы данных dbname и индекса index
Удалить базу данных databaseName со всеми внутренними данными
Удалить документ с Id = id из базы данных dbname и индекса index
Удалить индекс indexName из базы данных databaseName со всеми данными
{
Type:{type}
Key:{key},
Term:{text},
Sort:{key:0}
}
Поиск типа type по ключу key с искомым текстом text. Доступные типы поиска:
- Fulltext - полнотекстовый по ключу
- Errors - с ошибками по ключу
- Match - полное совпадение по ключу
- Full - полное совпадение по всему документу
- Not - операция "НЕ"
- Or - операция "ИЛИ"
QueryType:{type},
Sort:{key:0}
Searches:[
{
Type:{type}
Key:{key},
Term:{text},
},
...
]
QueryType: тип запроса. Может иметь одно из двух значений: or
- найдёт объединение по всем запросам. and
- найдёт пересечение по всем запросам. Запросов может быть сколько угодно.
В объекте Sort указывается ключ, по которому надо сортировать документы, и число. Если число 0 - сортировка по возрастанию. В любых других случаях сортировка по убыванию.
application/json:
{
"UserName":"string",
"Password":"string",
Database:"all"
}
Создать нового пользователя Доступ только под root!
Получить список всех пользователей без паролей (любой авторизованный юзер)
Получить список всех пользователей с паролями (только root)
Получить данные пользователя username
(только root)
application/json
{
"UserName":"string",
"Password":"string",
Database:"all"
}
Изменить данные пользователя username
на новые (только root)
Удалить пользователя username
(только root)
Получить объект текущей конфигурации. Подробнее о конфигурации см в соответствующем доке
application/json
{
"Host":"url",
"Port":int,
"Root":{"Password":"string"},
"Users":[
{
"UserName":"string",
"Password":"string",
"Database":"string"
}
],
"Filters": [
"string"
],
"SyncHosts":[
"string"
]
}
Устанавливает новую конфигурацию
Устанавливает конфигурацию по умолчанию