我有一个由 pdfbox api 类生成的索引LucenePDFDocument
。由于索引仅包含文本内容,我希望有效地搜索此索引。
我将使用搜索字符串搜索“内容”字段,结果顺序必须从最相关到最不相关。下面给出的代码确实显示了包含搜索文本单词的文件,例如“您的国籍是什么”,但结果不包含包含完整句子的文件。
在上述场景中,我应该使用什么查询解析器和查询进行搜索。
Query query = new MultiFieldQueryParser(Version.LUCENE_30, fields,
new StandardAnalyzer(Version.LUCENE_30))
.parse(searchString);
TopScoreDocCollector collector = TopScoreDocCollector.create(5,
false);
searcher.search(query, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
System.out.println("count " + hits.length);
for (ScoreDoc scoreDoc : hits) {
int docId = scoreDoc.doc;
Document d = searcher.doc(docId);
System.out.println(d.getField("path"));
}