"ph1 ph2"로 검색 할 때 "ph1"또는 "ph2"가 포함 된 텍스트를 찾습니다.Lucene 샘플 질문
String line = "ph1 ph2";
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer);
Query query = parser.parse(line);
누구나 1) 문구 ("PH1의 PH2")으로 검색하는 방법을 알고있다. 예 : 이것은 ph1 ph2 문장입니다. 2) 최대 거리를 가진 구 ("ph1 ph2 ~ 3"). 예제이 ph1은 ph2 문장입니다.
P.S 표준 Lucene Indexer를 사용하여 파일의 색인을 생성했습니다. 이 예는 확연히 볼 수 http://www.lucenetutorial.com/lucene-query-syntax.html
없는 경우 여기에 전체 코드입니다 :
String index = "C:/programs/lucenedemo/index";
String field = "contents";
IndexReader reader = DirectoryReader.open(FSDirectory.open(new File(index)));
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
//QueryParser parser = new QueryParser(Version.LUCENE_40, field, analyzer);
String line = "ph1 ph2";
QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer);
Query query = parser.parse(line);
//doPagingSearch(searcher, query, hitsPerPage, raw, queries == null && queryString == null);
//doPagingSearch
TopDocs results = searcher.search(query, 300000);
ScoreDoc[] hits = results.scoreDocs;
System.out.println(results.totalHits);
for (int i=0;i<10;i++) {
Document doc = searcher.doc(hits[i].doc);
String path = doc.get("path");
if (path != null) System.out.println((i+1) + ". " + path);
}
//end of doPagingSearch
reader.close();
감사에서 쿼리 구문 분석기에 추가 옵션 "PH1의 PH2"의 istead을 볼 수 있습니다 나는 "\"PH1의 PH2의 \ "~ 3"을 작성했다 –