我在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 ;
答案 0 :(得分:3)
检查索引的创建方式。听起来你可能使用过StringField而不是TextField。我不认为StringField会对其内容进行标记,而是将其视为一个大关键字。