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

OSCHINA-MIRROR/zacker330-es-ik

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Анализ на китайском языке для Elasticsearch

Требования:

  • Java 7 update 55 или более поздняя версия.

Структура es-ik:

  • 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.

Как использовать es-ik

Фактически, 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

Использование es-ik-sqlite3 (текущая версия 1.0.1):

  1. Сообщите Elasticsearch, где находится ваша база данных sqlite3, добавьте конфигурацию в ваш файл elasticsearch.yml, например:

    ik_analysis_db_path: /opt/ik/dictionary.db

    PS: Вы можете скачать мой dictionary.db с https://github.com/zacker330/es-ik-sqlite3-dictionary.

  2. Войдите в папку 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
  3. Протестируйте вашу конфигурацию: а) Создайте индекс песен:

    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 )

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

Введение

Китайский плагин для анализа, использующий IK-анализ для Elasticsearch. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/zacker330-es-ik.git
git@api.gitlife.ru:oschina-mirror/zacker330-es-ik.git
oschina-mirror
zacker330-es-ik
zacker330-es-ik
master