Lucene으로 자동 완성 기능을 구현하려고합니다. 예를 들어, 사용자가 "Lucene"을 입력하면 반환 된 결과는 "Lucene In Action"및 "Lucene for Dummies"일 수 있습니다.lucene에서 엄격한 접두사 찾기
내가 겪고있는 문제는 필드가 검색된 텍스트로 시작해야한다는 것인데, 중간에 어딘가에 있으면 안됩니다. "Lucene"을 검색하면 "Enterprise Lucene"이 반환되지 않습니다. 여기까지 제 코드는 위의 코드를 제외하고 있습니다 :
StandardAnalyzer analyzer = new StandardAnalyzer();
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter indexWriter = new IndexWriter(index, config);
addDocument(indexWriter, "Luceneinaction");
addDocument(indexWriter, "LuceneforDummies");
addDocument(indexWriter, "WhyisLucenesohard");
addDocument(indexWriter, "Managing Gigabytes");
addDocument(indexWriter, "The Art of Computer Science");
indexWriter.close();
Query query = new PrefixQuery(new Term("title", "lucene"));
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
TopDocs docs = searcher.search(query, 10);
for (ScoreDoc scoreDoc : docs.scoreDocs) {
System.out.println(searcher.doc(scoreDoc.doc).get("title"));
}
쉬운 해결책이 있습니까? PrefixQuery는 StringField와 호환되지 않으므로 공백으로 분리되지 않는 토크 나이저를 찾을 수 없습니다.