我目前正在使用Lucene的MultiFieldQueryParser在多个字段中搜索相同的查询(即搜索“value”会产生field1:value field2:value field3:value
)。但是,这会使用QueryParser标准not support wild card searches within phrases(即“测试短语*”)。所以我试图使用contrib / misc包中的ComplexPhraseQueryPhrase,它确实支持它。但是,这只允许您一次搜索一个字段,就像QueryParser一样。
所以我一直试图将两者结合起来,制作一个MultiFieldComplexPhraseQueryParser,但我还没有取得任何成功。有没有人做过这样的事情或有任何关于如何做的建议?谢谢!
答案 0 :(得分:0)
我实际上是通过使用MultiFieldQueryParser(Lucene 3.0.3)获得成功的:
public class MultiFieldQueryParserTests {
@Test
public void testMultiFieldQueryParser() throws Exception {
MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_30,
new String[] { "field1", "field2", "field3" },
new WhitespaceAnalyzer());
Query q = parser.parse("test phrase*");
System.out.println("query " + q);
q = parser.parse("\"test phrase*\"");
System.out.println("query " + q);
}
}
结果是:
query (field1:test field2:test field3:test) (field1:phrase* field2:phrase* field3:phrase*)
query field1:"test phrase*" field2:"test phrase*" field3:"test phrase*"
或者我在这里错过了什么?