弹性搜索 - 使用通配符进行精确短语搜索

时间:2015-04-10 02:11:07

标签: elasticsearch spring-data spring-data-elasticsearch

我正在寻找有关使用外卡进行精确短语搜索的帮助。

QueryBuilders.multiMatchQuery("Java Se", "title", "subtitle")
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX);

以上查询,返回以下结果。

1)Java搜索 2)弹性Java搜索

尾随通配符。

但是,当我像下面的查询一样搜索时,

QueryBuilders.multiMatchQuery("ava Se", "title", "subtitle")
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX);

它没有返回任何东西,因为没有完全匹配" ava Se"。 我期待与上面相同的结果。

领先的通配符不起作用。 反正有没有实现这个目标?

谢谢, Baskar.S

2 个答案:

答案 0 :(得分:1)

如果您查看“Type.PHRASE_PREFIX”的javadoc,您将看到只有字符串中的最后一个词用作前缀,因此在您的情况下只有“Se”。

我在索引中尝试了这个查询并且它有效: object

它返回的文档包含“我们正在加强提案......”,“通过使用..”等短语。

答案 1 :(得分:0)

您需要使用nGram分析器,甚至edgeNGram会更好。 完成后,您的索引可能会有点重,但是如果没有外卡,附加搜索将正常工作。