0

我在 Django 应用程序中使用弹性搜索进行全文搜索。我正在使用 pypi 中的 elastic_dsl 库与集群交互。我正在尝试在分析器中实现瓦状过滤器。我相信我已经让它使用默认值:

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 存储库中的示例以及一些源代码。

4

1 回答 1

0

您需要定义一个自定义令牌过滤器并在您的自定义分析器中使用它:

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)
    ]
)
于 2020-02-28T14:35:26.437 回答