gpt4 book ai didi

pdfbox - Lucene-有效的文本搜索

转载 作者:行者123 更新时间:2023-12-04 18:27:14 33 4
gpt4 key购买 nike

我有一个由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"));
}

最佳答案

这与程序部分无关,而与Lucene quesry syntax有关。要搜索整个短语,只需将其用双引号引起来,即不要搜索

What is your nationality


搜索

"What is your nationality"


不带引号的Lucene会找到所有带有单独单词的文档,即“ what”,“ is”,“ your”和“ nationality”(“ is”和“ your”可能会省略为 stop words),并按不仅在该词组中出现在doc中。由于您将 TopScoreDocCollector中找到的文档数设置为5,因此结果中可能不会出现带有该短语的文件。添加引号可使Lucene忽略所有其他不带确切短语的文档。

同样,如果仅在“目录”字段中搜索,则无需 MultiFieldQueryParser,而可以使用简单的 QueryParser

关于pdfbox - Lucene-有效的文本搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4712835/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com