2013-10-16 78 views
2

我在我的Spring MVC項目中使用hibernate-search,我想完成一些操作,但我不確定是否有可能。這裏的問題是:Hibernate搜索 - '%like%'類型查詢

我使用NGramFilterFactoryClass對於這一點,並配置minGramSize = 3maxGramSize = 3

比方說,我的搜索詞是 「關鍵字

如果我輸入這樣的事:

"ywo", "key", "ord", "blablaordblabla" 

查詢將返回 「關鍵字」。這是很好,我理解它是如何工作的,但我想做的事是,當我鍵入類似:

"bkey", "blablaordblabla" 

我不想回到「關鍵字」。 「關鍵字」應該只有當搜索詞是一樣的東西被退回:

"key", "ord", "ywo", "eywo", "word" etc... 

所以,我想我在尋找一個「%喜歡%」類型的查詢。我如何用hinernate-search來完成這項工作?

回答

1

如果你用NGrams分析你的輸入,你將無法執行精確的「Like%」查詢。 您可能需要一個SimpleAnalyzer或類似的東西,它不會將您的關鍵字完全分成較小的片斷,或者您可能想要跳過此字段的分析並按原樣將其編入索引。

然後,將其與WildCard查詢結合使用;請注意0​​如何使用關鍵字元素來構建查詢,該查詢固有地禁用輸入上的分析器。 (請確保您向下滾動文檔中的通配符查詢部分)。

我假設你使用的是NGrams,因爲你需要它們作爲另一個用例。請記住,您可以使用@Fields註釋以各種不同的方式對相同的屬性進行索引,因此您可以使用ngrams將其索引爲另外一種更適合通配符查詢的形式。