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

OSCHINA-MIRROR/mirrors-opensearch-analysis-ik

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

Анализ IK для OpenSearch

Плагин IK Analysis интегрирует анализатор Lucene IK (http://code.google.com/p/ik-analyzer/) в OpenSearch, поддерживает пользовательский словарь.

Анализаторы: ik_smart, ik_max_word, токенизаторы: ik_smart, ik_max_word.

Ответвление от: https://github.com/medcl/elasticsearch-analysis-ik/

Версии

Версия IK Версия OpenSearch
main 1.x -> main

Установка

  1. Скачайте или скомпилируйте.
  • Опция 1 — скачайте готовый пакет по ссылке: https://github.com/soosinha/opensearch-analysis-ik/releases. Создайте папку плагина cd your-opensearch-root/plugins/ и создайте в ней папку ik. Распакуйте плагин в папку your-opensearch-root/plugins/ik.

  • Опция 2 — используйте opensearch-plugin для установки.

    ./bin/opensearch-plugin install https://github.com/soosinha/opensearch-analysis-ik/releases/download/v1.0.0/opensearch-analysis-ik-1.0.0.zip

    Примечание: замените 1.0.0 на вашу версию OpenSearch.

  1. Перезапустите OpenSearch.

Быстрый пример

  1. Создайте индекс.
curl -XPUT http://localhost:9200/index
  1. Создайте отображение.
curl -XPOST http://localhost:9200/index/_mapping -H 'Content-Type:application/json' -d'
{
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_smart"
            }
        }

}'
  1. Индексируйте документы.
curl -XPOST http://localhost:9200/index/_create/1 -H 'Content-Type:application/json' -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST http://localhost:9200/index/_create/2 -H 'Content-Type:application/json' -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST http://localhost:9200/index/_create/3 -H 'Content-Type:application/json' -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST http://localhost:9200/index/_create/4 -H 'Content-Type:application/json' -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'
  1. Выполните запрос с выделением.
curl -XPOST http://localhost:9200/index/_search  -H 'Content-Type:application/json' -d'
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}
'

Результат

{
    "took": 14,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 2,
        "hits": [
            {
                "_index": "index",
                "_type": "fulltext",
                "_id": "4",
                "_score": 2,
                "_source": {
                    "content": "中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
                },
                "highlight": {
                    "content": [
                        "<tag1>中国</tag1>驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首 "
                    ]
                }
            },
            {
                "_index": "index",
                "_type": "fulltext",
                "_id": "3",
                "`_score": 2,
                "_source": {
                    "content": "中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"
                },
                "highlight": {
                    "content": [
                        "均每天扣1艘<tag1>中国</tag1>渔船 "
                    ]
                }
            }
        ]
    }
}

Конфигурация словаря

Файл IKAnalyzer.cfg.xml находится по пути {conf}/analysis-ik/config/IKAnalyzer.cfg.xml или {plugins}/opensearch-analysis-ik-*/config/IKAnalyzer.cfg.xml.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>IK Analyzer 扩展配置</comment>
    <!--Пользователь может настроить здесь свой собственный расширенный словарь-->
    <entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>
     <!--Пользователь может настроить здесь свой собственный словарь стоп-слов-->
    <entry key="ext_stopwords">custom/ext_stopword.dic</entry>
    <!--Пользователь может настроить здесь удалённый расширенный словарь -->
    <entry key="remote_ext_dict">location</entry> ### Метод использования горячего обновления IK-токенизации

В настоящее время этот плагин поддерживает горячее обновление IK-токенизации. Это можно сделать с помощью следующей конфигурации в файле конфигурации IK:

```xml
    <!--Пользователь может настроить здесь удалённый расширенный словарь стоп-слов-->
    <entry key="remote_ext_stopwords">location</entry>

Здесь location — это URL, например, http://yoursite.com/getCustomDict. Этот запрос должен соответствовать следующим двум пунктам для завершения токенизации горячего обновления:

  1. Этот HTTP-запрос должен возвращать два заголовка (header): один — Last-Modified, другой — ETag. Оба являются строковыми типами. Достаточно, чтобы один из них изменился, и этот плагин будет извлекать новый токен и обновлять словарную базу.

  2. Возвращаемое содержимое этого HTTP-запроса должно быть отформатировано как одна строка токенов, разделённых символами новой строки (\n).

После выполнения этих двух требований можно реализовать горячее обновление токенизации без необходимости перезапуска экземпляра OpenSearch.

Можно поместить слова, которые необходимо обновить автоматически, в файл .txt в кодировке UTF-8 и разместить его на сервере nginx или другом простом HTTP-сервере. Когда файл .txt изменяется, HTTP-сервер автоматически вернёт соответствующие Last-Modified и ETag при запросе клиента. Можно также создать инструмент для извлечения соответствующих слов из бизнес-системы и обновления файла .txt.

Have fun.

Часто задаваемые вопросы

  1. Почему не работает пользовательский словарь?

Пожалуйста, убедитесь, что формат текста вашего расширенного словаря — UTF8.

  1. Как установить вручную?
git clone https://github.com/soosinha/opensearch-analysis-ik
cd opensearch-analysis-ik
git checkout tags/{version}
mvn clean
mvn compile
mvn package

Скопируйте и распакуйте файлы из папки release: #{project_path}/opensearch-analysis-ik/target/releases/opensearch-analysis-ik-*.zip в каталог плагинов opensearch, например: plugins/ik. Перезапустите opensearch.

  1. Тест токенизации не удался.

Тестируйте, вызывая интерфейс анализа в определённом индексе, а не напрямую вызывая интерфейс анализа. Например:

curl -XGET "http://localhost:9200/your_index/_analyze" -H 'Content-Type: application/json' -d'
{
   "text":"中华人民共和国MN","tokenizer": "my_ik"
}'
  1. В чём разница между ik_max_word и ik_smart?

ik_max_word будет разбивать текст на мельчайшие фрагменты, такие как «中华人民共和国,中华人民,中华,华人,人民共和国,人民,人,民,共和国,共和,和,国国,国歌». Он исчерпывает все возможные комбинации и подходит для запросов термина.

ik_smart будет выполнять более грубое разбиение, такое как «中华人民共和国,国歌», и подходит для фразовых запросов.

Комментарии ( 0 )

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

Введение

Плагин IK Analysis интегрирует анализатор Lucene IK (http://code.google.com/p/ik-analyzer/) в opensearch, поддерживает пользовательский словарь. Развернуть Свернуть
Java
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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