Java Hibernate搜索:精确短语匹配

Java Hibernate搜索:精确短语匹配,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,使用Hibernate搜索,我无法搜索准确的句子 例如,在我的索引中有以下句子: 1 - New York weather 2 - New York 我只想得到第2行匹配的“纽约”,因此我进行以下查询: qb.phrase().onField("label").sentence("New York").createQuery() 但是这个查询同时返回“newyork”和“newyorkweather”,也就是说,当我想将我的句子用作equals时,我的句子被用作前缀 如何使用hibernat

使用Hibernate搜索,我无法搜索准确的句子

例如,在我的索引中有以下句子:

1 - New York weather
2 - New York
我只想得到第2行匹配的“纽约”,因此我进行以下查询:

qb.phrase().onField("label").sentence("New York").createQuery()
但是这个查询同时返回“newyork”和“newyorkweather”,也就是说,当我想将我的句子用作equals时,我的句子被用作前缀


如何使用hibernate搜索实现这一点?

在5.1.2.4中提到了“斜率因子”

尝试零的斜率因子

qb.phrase().withSlop(0).onField(“标签”).句子(“纽约”).createQuery()

还可以尝试使用本问题中提到的Lucene API


您的用例是一个直截了当的用例,可能不保证Hibernate搜索查询DSL有或没有提到的slop factor(),因为两个句子都包含短语“newyork”。如果您想要精确匹配,您需要查看KeywordAnalyzer和TermQueries。然而,如果你真的索引实际的多句子文本,这就没有意义了。我尝试了零斜率因子,但它不起作用。斜率因子是指句子中单词之间的最大距离,但不是指句子后面的额外单词。我将看看Lucene API,而不是Hibernate搜索API。