v2.1 крупное обновление!
В этом обновлении добавлена функция векторного поиска, которая расширяет возможности алгоритма в области наделения полномочиями. Для получения подробной информации обратитесь к Vector.md и документации по использованию векторного поиска.
Проектный фон и введение
Команда разработчиков создала поисковый сервис, который предоставляет функции разбиения на слова и создания индекса. Можно настроить китайский словарь слов, чтобы удовлетворить сложные запросы, включая:
Преимущества включают:
Тестирование демонстрационного проекта
Для тестирования демонстрационного проекта обратитесь к: Quickstart.md.
Схема архитектуры
Особенности и преимущества
Документация по интерфейсу
Документация по RESTFul-интерфейсу доступна по адресу: API.md. Включает два основных интерфейса: индексный импорт и индексный запрос.
Производительность
Подробные данные о производительности доступны по адресу: bench.md.
Конфигурационные файлы проекта Сервис записи индекса
Конфигурационный файл index_write находится в каталоге /usr/local/isearch/index_write/conf. Он использует формат JSON и определяет уровень журнала программы, порт прослушивания и информацию о соответствующем порте службы кэширования.
words_base.txt — файл словаря, используемый для разбиения текста на слова.
app_field_define.txt определяет информацию о полях приложения. Формат следующий:
app_id | field_id | field_name | is_primary_key | field_type | index_tag | snapshot_tag | segment_tag | unionField |
---|---|---|---|---|---|---|---|---|
10061 | 1 | doc_id | 1 | 1 | 0 | 0 | 0 | |
10061 | 2 | poi_name | 0 | 2 | 1 | 1 | 1 | |
10061 | 3 | longitude | 0 | 5 | 1 | 1 | 0 | |
10061 | 4 | latitude | 0 | 6 | 1 | 1 | 0 | |
10061 | 5 | gis | 0 | 1 | 1 | 0 | 0 | |
10061 | 0 | idx_gis_poi | 0 | 11 | 0 | 0 | 0 | 5,2 |
Подробное объяснение полей:
app_id: уникальный идентификатор приложения.
field_id: значение поля, уникальное обозначение одного поля во время индексации.
field_name: имя поля, определяемое пользователем.
is_primary_key: является ли это поле первичным ключом, обычно требуется установить поле документа id как первичный ключ, уникальный идентификатор записи.
field_type: тип поля, 1: INT, 2: SHORT_TEXT, 3: TEXT, 4: IP, 5: GEO_POINT, 9: DOUBLE, 10: LONG, 11: объединённый индекс, 14: GEO_SHAPE, 15: VECTOR.
index_tag: нужно ли индексировать это поле.
snapshot_tag: необходимо ли сохранять это поле в моментальном снимке.
segment_tag: режим сегментации, 0: не сегментировать, 1: режим сегментации по умолчанию, 3: сегментация пиньинь, 5: поддержка диапазона запросов.
unionField: поле объединённого индекса, соответствующее field_id.
Сервис чтения индекса
Файл конфигурации index_read находится в каталоге /usr/local/isearch/index_read/conf. Использует формат JSON, определяет уровень журнала программы, порт прослушивания и информацию о порту соответствующей службы кэша.
index_read.conf — файл конфигурации, использующий формат JSON. Определяет уровень журнала программы, порт прослушивания и информацию о порте соответствующей службы кэширования.
app_field_define.txt — информация о полях приложения.
words_base.txt — словарь, используемый для разделения текста.
После изменения информации о приложении необходимо перезапустить процесс. Скрипты запуска и остановки находятся в каталоге bin.
Управление индексом
Формат добавления документов можно найти в файле send.json. Команда операции: ./client_test send.json 106 127.0.0.1 11017. Эта команда напрямую отправляет TCP-запрос службе index_write для импорта индекса. Она поддерживает импорт нескольких строк данных.
Среди них appid — это идентификатор приложения, fields_count — количество документов, cmd — add означает добавление документа, fields — данные, соответствующие документу, а имена полей должны соответствовать определению в app_field_define.txt.
{"appid":10001,"table_content": {"cmd":"add", "fields": {"author":"张三","content":"亚运会第14天的比赛结束后,中国代表团以132枚金牌、92枚银牌和65枚铜牌列在金牌榜的首位,日本代表团以74枚金牌、56枚银牌和74枚铜牌列在次席,韩国代表团以49枚金牌、57枚银牌和70枚铜牌列在第三","title":"亚运会今闭幕 杭州8分钟传达什么信息","weight":430,"doc_id":"1381"}}}
Использование поиска
Формат запроса можно найти в search.json. Операция TCP: ./client_test search.json 101 127.0.0.1 12003. Пример запроса:
// 查询content字段包含京东的记录
{"query":{"match":{"content":"京东"}}, "appid":10001, "page_index":"1", "page_size":"10","fields":"title"}
Параметр | Тип | Обязательный | Описание |
---|---|---|---|
appid | int | Да | Идентификатор приложения |
query | string | Нет | Ключевое слово поиска |
page_index | int | Нет | Номер страницы |
page_size | int | Нет | Количество элементов на странице |
sort_type | int | Нет | Тип сортировки, 1: сортировка по умолчанию, 3: без сортировки |
sort_field | string | Нет | Поле сортировки |
fields | string | Нет | Возвращаемые поля значений |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )