【问题标题】:ElasticSearch: is it possible to highlight words in the query rather than the resultsElasticSearch:是否可以突出显示查询中的单词而不是结果
【发布时间】:2017-01-25 04:45:25
【问题描述】:

我们使用 ElasticSearch 的方式与我通常看到的相反。我们存储了大量的小文档,通常是 1 或 2 个单词,例如“软件工程”、“汽车修理工”、“建筑师”等职位名称。

然后我们使用更长的字符串进行查询,例如 1000 字的 Job Spec。通过这种方式,我们可以得到职位规范文本中出现的所有职位。

效果很好。但我想知道是否可以让 ElasticSearch 突出显示职位规范中匹配的职位,即突出显示查询中的结果。我试过highlight 关键字,但它没有突出显示查询文本,而是突出显示结果。我不确定如何在 ElasticSearch 响应中返回查询,更不用说它是否可以突出显示。

您可能想知道为什么我需要 ElasticSearch 来突出显示查询,我不能从文本中挑选出所有结果并自己突出显示吗?是的,我可以,但是有很多事情需要考虑,比如词干和停用词删除。例如,在 ElasticSearch 中进行标记时,“jquery”被提取为“jqueri”,因此可以找到它,但如果我想自己突出显示它,我必须将其取消提取,使其与原始文本匹配。 Elasticsearch 还删除了符号,因此 terms & conditions 将变为 terms conditions 如果我想手动突出显示它,这是有问题的,因为我必须添加回“&”符号。还有一百个其他问题案例,因此关于 ElasticSearch 是否可以为我做这件事的问题。

【问题讨论】:

  • 很好的问题。现在就开始工作 - 分析操作可以帮助您获得弹性搜索所看到的确切令牌,但您必须使用应用程序层来对自己进行映射。根据查询的复杂性,这可能非常具有挑战性。

标签: elasticsearch highlight


【解决方案1】:

我很确定高亮查询字符串是不可能的——只能高亮索引中的部分文档。

您可以尝试在其自己的索引中索引查询字符串本身,然后将第一个查询的结果用作针对查询字符串的第二个查询的查询词(在第二个索引中) )。然后,您可以突出显示查询字符串。您每次都必须向 ES 提出额外的请求,但我认为它会得到您想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    相关资源
    最近更新 更多