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

OSCHINA-MIRROR/jd-platform-opensource-isearch

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 19:49 6237a15

v2.1 крупное обновление!

В этом обновлении добавлена функция векторного поиска, которая расширяет возможности алгоритма в области наделения полномочиями. Для получения подробной информации обратитесь к Vector.md и документации по использованию векторного поиска.

Проектный фон и введение

Команда разработчиков создала поисковый сервис, который предоставляет функции разбиения на слова и создания индекса. Можно настроить китайский словарь слов, чтобы удовлетворить сложные запросы, включая:

  • поиск по полю;
  • сортировку по полю;
  • булевый поиск;
  • географический поиск (POI, AOI);
  • другие функции.

Преимущества включают:

  1. Разбиение китайских слов на части, поддержка различных китайских диалектов.
  2. Разработка на C++, облегчённая версия, для работы которой достаточно 4-ядерного процессора с 8 ГБ памяти, что позволяет поддерживать крупномасштабное хранение.
  3. Поддержка динамического увеличения количества сегментов хранения, что облегчает масштабирование.
  4. Журнал является хранилищем.
  5. Поддерживает векторный поиск.

Тестирование демонстрационного проекта

Для тестирования демонстрационного проекта обратитесь к: Quickstart.md.

Схема архитектуры

Схема архитектуры

Особенности и преимущества

  1. Управление контейнерами упрощает быстрое развёртывание и масштабирование, позволяя использовать dockerfile для однократной компиляции и развёртывания.
  2. Поддерживается HTTP-способ импорта данных и запросов (требуется развёртывание уровня доступа), а при использовании SDK или TCP-способа требуется только развёртывание уровня индекса.
  3. Используется стабильная и эффективная разработка на C++ для быстрого поиска и ответа, а архитектура проста.
  4. Предоставляет множество функций, сокращая время разработки, поддерживая поиск по полям, сортировку по полям, булевый поиск, географический поиск и другие функции.
  5. Поддерживает векторный поиск, см. Vector.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 )

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

1
https://api.gitlife.ru/oschina-mirror/jd-platform-opensource-isearch.git
git@api.gitlife.ru:oschina-mirror/jd-platform-opensource-isearch.git
oschina-mirror
jd-platform-opensource-isearch
jd-platform-opensource-isearch
master