我在Lucene中创建了一个文档索引。其中一个字段名为title
,我想搜索title
包含word
的所有文档。不幸的是,我只得到确切的结果 - 我得到带有标题的文档word
(但不是例如 my word
)。
法典:
String field = "title";
String value = "word";
List<MyDoc> myDocList = new ArrayList<MyDoc>();
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_45);
QueryParser parser = new QueryParser(Version.LUCENE_45, field, analyzer);
try {
Query query = new TermQuery(new Term(field, value));
int numResults = 100;
ScoreDoc[] hits = indexSearcher.search(query,numResults).scoreDocs;
for (int i = 0; i < hits.length; i++) {
Document doc = indexSearcher.doc(hits[i].doc);
myDocList .add(getMyDoc(doc));
}
} catch (IOException e) {
e.printStackTrace();
}
return myDocList ;
检查索引是如何创建的。听起来您可能使用了StringField而不是TextField。我不认为 StringField 会标记它的内容,而是将其视为一个大关键字。