ElasticSearch:是否可以在查询中突出显示单词而不是结果

时间:2016-09-16 21:18:59

标签: elasticsearch highlight

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

然后我们用更长的字符串查询,例如1000字的Job Spec。这样我们就可以在工作规范的文本中找到所有职位名称。

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

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

1 个答案:

答案 0 :(得分:1)

我非常确定突出显示查询字符串是不可能的 - 只突出显示索引中的部分文档。

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