2016-07-02 8 views
1

私は初心者でLuceneの学習を始めました。現在私はlucene 6.0.2でCount Facetsプログラムを実装しています。これはすべてのファセットフィールド数を表示または出力します。しかし、今、街「カリフォルニア」を検索すると、結果には、それはすべての面でこれを行うにはどのように、このクエリWRTをカウント表示されますしたい...ここ特定のフィールドに対してすべてのファセットレコードを取得するLucene

はコードです:

public List<FacetResult> runSearch() throws IOException { 
    DirectoryReader indexReader = DirectoryReader.open(indexDir); 
    IndexSearcher searcher = new IndexSearcher(indexReader); 
    TaxonomyReader taxoReader = new DirectoryTaxonomyReader(taxoDir); 
    FacetsConfig config = new FacetsConfig(); 

    FacetsCollector fc = new FacetsCollector(); 
    FacetsCollector.search(searcher, new MatchAllDocsQuery(), 10, fc); 

    List<FacetResult> results = new ArrayList<>(); 

    Facets facets = new FastTaxonomyFacetCounts(taxoReader, config, fc); 
    results.add(facets.getTopChildren(10, "city")); 
    results.add(facets.getTopChildren(10, "make")); 
    results.add(facets.getTopChildren(10, "year")); 
    results.add(facets.getTopChildren(10, "model")); 

    indexReader.close(); 
    taxoReader.close(); 

    return results; 
} 

答えて

0

からあなたの例では、あなたが最初の検索で*検索したことになります。 "* AND city:california"を検索するには、元のクエリとフィルタ(例:

Query baseQuery = new MatchAllDocsQuery(); 
DrillDownQuery ddQuery = new DrillDownQuery(config, baseQuery); 
ddQuery.add("city", "california"); 
FacetsCollector fc = new FacetsCollector(); 
FacetsCollector.search(searcher, ddQuery, 10, fc); 

Addは複数回呼び出すことができます。同じフィールドで呼び出すと、値はORで追加されます。別のフィールドで呼び出すと、その制限にANDが付加されます。 (* AND(都市:カリフォルニアOR市:york)AND year:1980)

関連する問題