Как включить фильтр shingleasticsearch в анализатор с Pythonasticsearch_dsl - PullRequest
0 голосов
/ 25 февраля 2020

Я использую elasti c поиск для полнотекстового поиска в приложении Django. Я использую библиотекуastic_dsl из pypi для взаимодействия с кластером. Я пытаюсь реализовать фильтр гальки в анализаторе. Я думаю, что я получил его для работы со значениями по умолчанию:

from elasticsearch_dsl import analyzer, tokenizer


main_analyzer = analyzer(
    'main_analyzer',
    tokenizer="standard",
    filter=[
        "lowercase",
        "stop",
        "porter_stem",
        "shingle"
        ]
    )

Я хотел бы изменить значения по умолчанию. Например, установите max_shingle_size в 5 вместо значения по умолчанию 2. Я не могу найти синтаксис для этого. Я прочитал документацию, примеры в репозитории Git и некоторые исходные коды.

1 Ответ

0 голосов
/ 28 февраля 2020

Вам необходимо определить собственный токен-фильтр и использовать его в своем анализаторе:

from elasticsearch_dsl import analysis

main_analyzer = analysis.analyzer(
    "main_analyzer",
    tokenizer="standard",
    filter=[
        "lowercase",
        "stop",
        "porter_stem",
        analysis.token_filter("my_shingle", "shingle", max_shingle_size=5)
    ]
)
...