2015-10-30 8 views
7

Neredeyse lucene için yeni ve AND'yi denedim ve bazı sorgular ve bunları görüntülüyorum. Tüm web için googled ettik, Ancak bu soruna doğru çözümü bulamıyorum. Boole sorgu araması için çözümler BooleanQuery lucene sınıfını içerir. Fakat bu sınıf (i kullanıyorum) Lucene 5.3.1 önerilmiyor HereLucene 5.3.x'te BooleanQuery oluşturucu nasıl kullanılır?

Bu benim kod parçasıdır:

public static void searchBooleanQuery(String indexDir, Query query1, 
             Query query2, Query query3, Query query4) throws IOException { 
    IndexReader rdr = DirectoryReader.open(FSDirectory.open(Paths.get(indexDir))); 
    IndexSearcher is = new IndexSearcher(rdr); 
    BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder(); 
    booleanQuery.add(query1, BooleanClause.Occur.MUST); 
    booleanQuery.add(query2, BooleanClause.Occur.MUST); 
    booleanQuery.add(query3, BooleanClause.Occur.MUST); 
    booleanQuery.add(query4, BooleanClause.Occur.MUST); 
} 

Güncelleme

sorun: elimden Bu Boolean Query görüntülemiyor IndexSearcher Nesne, Bu sınıfın arama yöntemi (IndexSearcher) bir Sorgu tarafından geçirilmesi gerektiğinden! bana ben bu kodu çalıştırmak çalışıyorum hata veriyor Yani:

TopDocs hits = is.search(booleanQuery,10); 
... 
+0

Tam olarak sorun nedir? Sorguya iyi para ekliyorsunuz. Şimdi sadece sorguyu oluşturun ve IndexSearcher ile kullanın. – user1071777

+0

Güncelleştirmede yanıtladım. @ user1071777 –

cevap

6

Sizin booleanQuery nesne aslında BooleanQuery.Builder değil BooleanQuery bir örneğidir.

Tüm sorgularınızı oluşturucuya eklemeyi tamamladıktan sonra, build yöntemini çağırmanız gerekir.

Ex.

TopDocs hits = is.search(booleanQuery.build(),10); 
+0

Teşekkür ederiz! çok çalışıyor :) –