运营商喜欢LUCENE

时间:2014-02-14 10:28:54

标签: sql lucene.net lucene zend-search-lucene

我在Lucene 4.6工作,我正在尝试查找“field1”中包含“keyword1”的记录和“field2”中的“keyword2” 我写了以下查询:

Query q = MultifieldQueryParser.parse(
    Version.Lucene_46, 
    new String[] {keyword1, keyword2}, 
    new String[]{"field1","field2"}, 
    new StandardAnalyzer()
);

这给了我一些结果,但我想在SQL中使用%keyword1%,%keyword2%。


感谢您的回答。如果我有一个值为“Lucene Game Lucene”的字段,并且我正在使用关键字“Game”查找该文档,我无法使用关键字来获取该结果谁有任何想法关于这个?

2 个答案:

答案 0 :(得分:3)

您可以使用WildcardQuery。支持的通配符是*,它匹配任何字符序列(包括空字符序列)和?,它匹配任何单个字符。 \是转义字符。

您也可以使用通配符作为前缀,例如*nix,但这对大型索引来说可能会非常慢,因为Lucene需要扫描整个Terms列表。

[编辑]

如果您需要在queryparser中使用前缀通配符,请务必致电setAllowLeadingWildcard(true)QueryParser As can be seen here

答案 1 :(得分:1)

Lucene中的WildcardQuery提供了搜索关键字%的可能性。另一方面,在索引编制过程中还有一些工作要做。您需要以反转形式(在其他字段中)索引术语并执行查询drowyek%。