簡體   English   中英

在Lucene中將多個字段與ComplexPhraseQueryParser一起使用

[英]Using multiple fields with ComplexPhraseQueryParser in Lucene

我目前正在使用Lucene的MultiFieldQueryParser在多個字段中搜索相同的查詢(即,搜索“值”將產生field1:value field2:value field3:value )。 但是,它使用標准的QueryParser ,它不支持在短語 (即“測試短語*”) 內進行通配符搜索 因此,我嘗試使用contrib / misc包中的ComplexPhraseQueryPhrase ,它確實支持該功能。 但是,這只允許您一次搜索一個字段,就像QueryParser一樣。

因此,我一直試圖將兩者結合起來,制作一個MultiFieldComplexPhraseQueryParser,但是我還沒有取得任何成功。 有沒有人做過這樣的事情或對如何做有任何建議? 謝謝!

實際上,我從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*"

還是我想念這里的東西?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM