2016-11-24 17 views
0

私はLuceneの6.2.1で、次の試してみました:交差点 - Luceneの

私は異なるフィールドABCDEを持っていると私は別のsearchqueryすべてのフィールドのために作ります。

次に交差点を作りたいと思います。結果がどこにあってもそれを表示してください。

誰かがBooleanqueryでこれを試してくださいました。だからこれは私のアプローチです:

IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get(index))); 
IndexSearcher searcher = new IndexSearcher(reader); 
Analyzer analyzer = new StandardAnalyzer(); 

BufferedReader in = null; 
in = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); 

QueryParser parser1 = new QueryParser("A", analyzer);// i have 5 different QueryParser 
Query qPersonen = parser1.parse("searchstring"); // i have also 5 Queries 
booleanQuery.add(qPersonen, BooleanClause.Occur.MUST); 

TotalHitCountCollector collector = new TotalHitCountCollector(); 
TopDocs results = searcher.search(booleanQuery.build(), 100); 

ScoreDoc[] hits = results.scoreDocs; 
int numTotalHits = results.totalHits; 
System.out.println("Results: " + numTotalHits); 

なぜ機能していませんか?何が原因だろう?それは、常に結果を返しません:(

+0

あなたの質問は何ですか?アプローチが機能していないのですか? – root545

+0

「BooleanQuery」のインスタンスを取得してみませんか? –

答えて

0

私はあなたのコードを見るとわかるように、あなたがBooleanQueryのインスタンスを取得していないようですluceneの5ので、ブールクエリのAPIが変更されている次のことを試してみてください。。

QueryParser parser1 = new QueryParser("A", analyzer);// i have 5 different QueryParser 
Query qPersonen = parser1.parse("searchstring"); // i have also 5 Queries 
BooleanQuery.Builder bq = new BooleanQuery.Builder(); 
bq.add(new BooleanClause(aPersonen, BooleanClause.Occur.MUST)); 

これはあなたのためにうまくいくでしょう:)