2012-01-10 7 views
0

私は現在、LuceneのMultiFieldQueryParserを使用して、同じクエリを複数のフィールドで検索しています(つまり、 "value"の検索ではfield1:value field2:value field3:valueが生成されます)。しかし、これはのnot support wild card searches within phrases(つまり "test phrase *")を使用します。ですから私はcontrib/miscパッケージのComplexPhraseQueryPhraseを使用しようとしています。これはそれをサポートしています。しかし、QueryParserのように、一度に1つのフィールドしか検索することができません。LuceneのComplexPhraseQueryParserで複数のフィールドを使用する

私はこの2つを組み合わせて、MultiFieldComplexPhraseQueryParserを作成しようとしていますが、まだ成功していません。誰もこれのような何かをしたか、それを行う方法に関する提案がありますか?ありがとう!

答えて

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*" 

または私はここで何かを見逃したのか?

+0

私は違いがアナライザだと思います。私は今の私の前にそれを持っていませんが、私はStandardAnalyzerを使用していると確信しています。 – schmimd04

+0

アナライザーは実際に私が思うに違いないはずです。 QueryParserは、トークンをアナライザーに渡す前にワイルドカード照会を行います。 – wesen

関連する問題