ik-analysis-core — алгоритм этого модуля взят из ik-analyzer. В принципе, вы можете использовать этот модуль для реализации плагина Solor Analyzer или плагина Elasticsearch. Вам просто нужно реализовать интерфейс DictionaryConfiguration, чтобы предоставить содержимое словаря, которое используется в процессе анализа контента.
ik-analysis-es-plugin — интеграция с модулем ik-analyzer-core и Elasticsearch. Определение типа SPI (Service Provider Interface), которым является Configuration, расширяет DictionaryConfiguration.
es-ik-sqlite3 — сохранение содержимого словаря в базе данных Sqlite3. Этот модуль является своего рода «поставщиком услуг» для конфигурации SPI, определённой в ik-analysis-es-plugin.
Фактически, ik-analysis-es-plugin предоставляет интерфейс DictionaryConfiguration как своего рода SPI. Es-ik-sqlite3 реализует его так, что ik-analysis-es-plugin может получать содержимое словаря из Sqlite. Другими словами, вы можете получить свою реализацию, например, сохраняя содержимое словаря в Redis.
SPI — это всего лишь концепция. В Java я использую ServiceLoader для его реализации. Как только ваша реализация соответствует использованию ServiceLoader, вам не нужно изменять модуль ik-analysis-es-plugin, и вы получите новый плагин ik-analysis-es-plugin: P
Сообщите Elasticsearch, где находится ваша база данных sqlite3, добавьте конфигурацию в ваш файл elasticsearch.yml, например:
ik_analysis_db_path: /opt/ik/dictionary.db
PS: Вы можете скачать мой dictionary.db с https://github.com/zacker330/es-ik-sqlite3-dictionary.
Войдите в папку Elasticsearch и установите плагин:
./bin/plugin -i ik-analysis -u https://github.com/zacker330/es-ik-plugin-sqlite3-release/raw/master/es-ik-sqlite3-1.0.1.zip
Протестируйте вашу конфигурацию: а) Создайте индекс песен:
curl -X PUT -H "Cache-Control: no-cache" -d '{
"settings":{
"index":{
"number_of_shards":1,
"number_of_replicas": 1
}
}
}' 'http://localhost:9200/songs/'
б) Создайте карту для songs/song:
curl -X PUT -H "Cache-Control: no-cache" -d '{
"song": {
"_source": {"enabled": true},
"_all": {
"indexAnalyzer": "ik_analysis",
"searchAnalyzer": "ik_analysis",
"term_vector": "no",
"store": "true"
},
"properties":{
"title":{
"type": "string",
"store": "yes",
"indexAnalyzer": "ik_analysis",
"searchAnalyzer": "ik_analysis",
"include_in_all": "true"
}
}
}
}
' 'http://localhost:9200/songs/_mapping/song'
в) Протестируйте его:
curl -X POST -d '林夕为我们作词' 'http://localhost:9200/songs/_analyze?analyzer=ik_analysis'
Ответ:
{"tokens":[{"token":"林夕","start_offset":0,"end_offset":2,"type":"CN_WORD","position":1},{"token":"作词","start_offset":5,"end_offset":7,"type":"CN_WORD","position":2}]}
4. Создайте пустую базу данных sqlite3 для es-ik-sqlite3:
а) Создайте базу данных:
```sqlite3 dictionary.db```
б) Создайте таблицы:
```CREATE TABLE main_dictionary(term TEXT NOT NULL,unique(term));
CREATE TABLE quantifier_dictionary(term TEXT NOT NULL,unique(term));
CREATE TABLE stopword_dictionary(term TEXT NOT NULL,unique(term));```
617 052 записи ~= 30 МБ файла базы данных.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )