2016-09-16 94 views
0

我们以与通常所见相反的方式使用ElasticSearch。我们存储大量小文档,通常为1或2个字,例如“软件工程”,“汽车修理工”,“建筑师”等职位。ElasticSearch:是否可以突出显示查询中的单词而不是结果

然后我们用更长的字符串进行查询,例如1000字的工作规格。这样我们就可以在作业规范的文本中获得所有职位。

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

您可能想知道为什么我需要ElasticSearch来突出显示查询,难道我不能从文本中挑出所有结果并自己突出显示它们吗?是的,我可以,但有很多事情需要考虑,因为这样做很难,比如去除干扰词和去除词组。例如,“jquery”在ElasticSearch中进行令牌化时被称为“jquery”,因此它被作为结果发现,但如果我想自己突出显示它,则必须解释它以便与原始文本匹配。 Elasticsearch也会删除符号,因此terms & conditions会变成terms conditions,如果我想手动突出显示它,则会产生问题,因为我必须添加“&”符号。还有一百个其他问题,因此有关ElasticSearch是否可以为我做的问题。

+0

优秀的问题。现在正在进行这项工作 - 分析操作可以帮助您获得如弹性搜索所示的确切标记,但您必须使用应用程序层为自己绘制映射。根据查询的复杂性,这可能非常具有挑战性。 – ProfileTwist

回答

1

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

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

+0

好主意,谢谢。 – Tom

相关问题