2014-04-09 49 views
0

我使用Hibernate Search的DSL進行查詢,我需要尋找在法國的一些關鍵字。如何在具有定冠詞的Hibernate搜索中搜索關鍵字?

例如,當我使用這個查詢:

Query query = queryBuilder.keyword().onField("normVal").matching("asthme").createQuery(); 

這只是比賽場上「normVal」字asthme,但我想查詢可以找到的單詞「L'asthme」或「d」 「也是。

是有人知道我可以在Hibernate Search的做到這一點?????????

回答

1

您可以使用matching方法與你的字符串通配符:?代表單個字符和*代表任意字符序列

所以,你的代碼,例如,可以是:

Query query = queryBuilder.keyword().onField("normVal").matching("*asthme*").createQuery(); 

你可以找到更多的細節here

編輯後OP評論

如果你有固定的值來進行搜索,比如與文章的話,你也可以嘗試這樣的事情,而不是wildcars:

Query query = queryBuilder.bool() 
.should(queryBuilder.keyword().onField("normVal").matching("l'asthme").createQuery()) 
.should(queryBuilder.keyword().onField("normVal").matching("d'asthme").createQuery()) 
.should(queryBuilder.keyword().onField("normVal").matching("asthme").createQuery()) 
.createQuery(); 

請注意,該should方法會像一個OR查詢操作

+0

我已經試過這種方法,但用通配符搜索將增加搜索的時候,我看到了,建議查詢不使用任一開始呢?要麼 *。有其他方法可以解決這個問題嗎? – Stephan

+0

如果你已經試過這個,那真正的問題是什麼?這不是你要求的,下次更具體請。 – Cirou

+0

對不起,我只是想找到一個解決方案,可以解決這個問題,並不降低系統的性能。 – Stephan