2015-10-19 143 views
1

使用Hibernate搜索,我无法设法搜索一个确切的句子。休眠搜索:精确短语匹配

例如,具有在我的索引下面的句子:

1 - New York weather 
2 - New York 

我想只得到2号线匹配“纽约”,所以我提出以下查询:

qb.phrase().onField("label").sentence("New York").createQuery() 

但是这个查询同时返回“纽约”和“纽约天气”,也就是说我的语句像前缀一样用作前缀,我想用它作为等号。

如何使用hibernate搜索做到这一点?

+0

不管有没有提到的斜率因子(http://stackoverflow.com/a/33220345/115835)这两个句子都会匹配,因为两者都包含短语“纽约”。如果您想要完全匹配,您需要查看KeywordAnalyzer和TermQueries。然而,如果你真的索引实际的多句话文本,这是没有意义的。 – Hardy

回答

1

在5.1.2.4它提到了 '模糊因子'

https://docs.jboss.org/hibernate/search/4.1/reference/en-US/html_single/#search-query-querydsl

尝试零斜率因子?

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

也尝试使用在这个问题提到了Lucene API。

Finding exact match using Lucene search API

你的使用情况是一个简单的一个,可能不保证Hibernate的搜索查询DSL

+0

我试过零坡度因子,但没有奏效。斜率因子用于句子中单词之间的最大距离,但不适用于句子之后的额外单词。 – tony75

+0

我将看看Lucene API而不是Hibernate搜索。 – tony75