Lucene.NET 3.0.3을 사용하여 두 필드 ("Noidung", "Dapa"라는 두 개의 필드가 있음)에 대한 검색을 수행하고 있습니다. BooleanQuery
을 C#으로 사용하지만 이것을 실행할 때 결과로 아무 것도 반환하지 않는 코드를 테스트했기 때문에 검색 할 소스에 아무런 문제가 없다고 확신합니다. 그래서 Lucene.NET 3.0.3을 사용하는 사람이 설명을 할 수 있습니까? Lucene.NET 3.0.3에서 BooleanQuery가 반환되지 않는 이유는 무엇입니까?
IndexReader indexreader = IndexReader.Open(directory, true);
Searcher indexsearch = new IndexSearcher(indexreader);
BooleanQuery bq = new BooleanQuery();
Query q1 = new TermQuery(new Term("Noidung", PhanSoSanh));
Query q2 = new TermQuery(new Term("Dapa", txtText.Text.ToString().Trim()));
bq.Add(q1, Occur.MUST);
bq.Add(q2, Occur.MUST);
TopDocs ketqua = indexsearch.Search(bq, null, 500);
var hits = ketqua.ScoreDocs;
foreach (var hit in hits)
{
// Return result
}
나는 색인 ("Noidung", "방위 사업 청")을 2 필드가 있습니다. 이제 "Noidung"필드를 검색 한 다음 결과를 "Dapa"로 검색하고 싶습니다. 나는 booleanQuery를 사용하지만 결과에서 주목할만한 결과를 얻지 못했습니까? 도와주세요?
용어 검색어를 만드는 방법은 대소 문자 및 토큰 화와 관련하여 정확한 일치를 수행 할 것을 제안합니다. KeywordAnalyzer로 문서의 색인을 생성하고 있습니까? PhanSoSanh 및 txtText.Text 값은 무엇입니까? 왜 당신은 QueryParser를 사용하지 않는가? – sisve
PhanSoSanh 및 txtText.text는 검색 할 문자열입니다. 텍스트 상자에서 가져옵니다. 색인 생성은 정상입니다! 왜냐하면 내가 색인을 생성 할 때 QueryParser를 사용하여 하나의 필드를 검색해야하기 때문이다. 그러나 지금 나는 다른 2 개의 색인의 색인에있는 2 개의 분야에서 찾아야한다. – Nam