【问题标题】:Elasticsearch matching with meaningElasticsearch 与意义匹配
【发布时间】:2021-11-08 23:38:56
【问题描述】:

我有一个带有健身计划的弹性搜索索引。我想匹配计划标题,但只进行文本匹配会导致问题。 在搜索“减肥”时,我看到“减肥”计划的最高结果,但第二个结果是“体重增加”计划。 我如何不将“减肥”与“体重增加”相匹配?我正在寻找一种我理解查询语义的方法,而不仅仅是文本匹配。

【问题讨论】:

  • 您要获取数据的查询是什么,请添加示例文档

标签: elasticsearch


【解决方案1】:

如果您要求文档包含所有单词“Weight”和“Loss”,请使用匹配运算符and

我假设您使用带有“减肥”一词的全文match dsl 进行搜索。 Elasticsearch 将通过 an analyzer 分析您的查询,其中包括:字符过滤器、标记器、标记过滤器,因此这取决于您的相应设置。

如果您使用默认设置,搜索词“Weight Loss”将被分析并标记为“weight”和“loss”。由于default operator of match queryOR,所以它将匹配包含“weight”OR“loss”的文档,因此您的“Weight Gain”文档也会被捕获。

要仅匹配包含“Weight”AND“Loss”这两个词的文档,您需要在匹配查询中明确使用运算符and

您的搜索查询应如下所示

{
    "query": {
        "match": {
            "<your_document_field_name>": {
                "query": "Weight Loss",
                "operator": "and"
            }            
        }
    }
}

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 2012-12-01
    相关资源
    最近更新 更多