lucene에 대한 몇 가지 문제점이 있습니다. 데이터베이스를 쿼리하고 있습니다. 나는 인덱스가 괜찮다는 것을 알고있다. (나는 lukeall-4.4.0로 체크했다.) 쿼리는 다음과 같이 구성됩니다.검색 결과보기 - lucene 4.4.0
Q = Query.split(" ");
booleanQuery = new BooleanQuery();
//Query[] Queryy = new Query[5 + 5 * Q.length];
Query[] Queryy = new Query[3 + 3*Q.length];
//USING THE ALL TEXT
Queryy[0] = new TermQuery(new Term("DESIGNACAO", Query));
Queryy[1] = new TermQuery(new Term("DESCRICAO", Query));
Queryy[2] = new TermQuery(new Term("TAG", Query));
//USING THE SEPARETED VALUES
for (int i = 3, j = 0; j < Q.length; i++, j++) {
Queryy[i] = new TermQuery(new Term("DESIGNACAO", Q[j]));
Queryy[++i] = new TermQuery(new Term("DESCRICAO", Q[j]));
Queryy[++i] = new TermQuery(new Term("TAG", Q[j]));
}
for (int i = 0; i < Queryy.length; i++) {
booleanQuery.add(Queryy[i], BooleanClause.Occur.MUST);
}
쿼리가 정상입니다. 내가 SimpleAnalyser을 사용하고
+DESIGNACAO:not or +DESCRICAO:not or +TAG:not or +DESIGNACAO:not +DESCRICAO:not +TAG:not +DESIGNACAO:or +DESCRICAO:or +TAG:or
을, 따라서 단어되지 않고되거나 제거되지 않습니다 : "없습니다 또는"쿼리 검색의 경우 (A booleanQuery는) 다음과 같은 될 것입니다. 문제는 내가 안타를 칠 수 없다는 것이다. lukeall-4.4.0으로 검색을하면 코드가 나오지만 안타깝습니다. 내 검색 방법은 다음 중 하나입니다.
IndexReader reader = IndexReader.open(directory1);
TopScoreDocCollector collector = TopScoreDocCollector.create(50, true);
searcher = new IndexSearcher(reader);
searcher.search(booleanQuery, collector);
hits = collector.topDocs().scoreDocs;
int total = collector.getTotalHits();
displayResults();
데이터를 수집하는 데 문제가 있습니까?
친절한 답변
어떻게하면 부울 쿼리를 만들 수 있습니까? 그것을 보여줄 수 있습니까? –
JtheRocker, 내 질문을 편집했습니다.) –
그래서, DESIGNACAO 필드에서 'not'을 (를) 찾고 있는지 확인하십시오. –