我在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”查找该文档,我无法使用关键字来获取该结果谁有任何想法关于这个?
答案 0 :(得分:3)
您可以使用WildcardQuery。支持的通配符是*
,它匹配任何字符序列(包括空字符序列)和?
,它匹配任何单个字符。 \
是转义字符。
您也可以使用通配符作为前缀,例如*nix
,但这对大型索引来说可能会非常慢,因为Lucene需要扫描整个Terms
列表。
[编辑]
如果您需要在queryparser中使用前缀通配符,请务必致电setAllowLeadingWildcard(true)
在QueryParser
As can be seen here
答案 1 :(得分:1)
Lucene中的WildcardQuery提供了搜索关键字%的可能性。另一方面,在索引编制过程中还有一些工作要做。您需要以反转形式(在其他字段中)索引术语并执行查询drowyek%。