2014-04-09 50 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