0

在 Lucene 的教程中(http://www.lucenetutorial.com/lucene-in-5-minutes.html),

public class HelloLucene {
public static void main(String[] args) throws IOException, ParseException {
IndexWriter w = new IndexWriter(index, config);
         addDoc(w, "Lucene lucene in Action");
         addDoc(w, "Lucene for Dummies");
         addDoc(w, "Managing Gigabytes");
         addDoc(w, "The Art of Computer Science");
         w.close();
String querystr = args.length > 0 ? args[0] : "lucene";
//...
 }
}

当我如上所示将字符串更改为“Lucene lucene in Action”时,然后在文档中搜索关键字“lucene”,它会找到字符串“Lucene lucene in Action”的命中数为 1。我想发送一个字符串(例如“asd asd fds asd”)来运行并搜索“asd”并找到结果 3. 如何使用查询 addDoc(w, "asd asd fds asd"); ???

它没有给出所选行中的命中数。如果有一个或多个命中,则写入 1,如果没有,则写入 0。

4

2 回答 2

1

我相信您正在寻找的是术语向量频率的计算。

在他们身上看到这个问题 -如何计算一组文档的词频?

而这 -从 Lucene 索引中获取最高频率项

如果我理解这个问题,您是在问如何计算输入短语(例如“asd”)在索引中的文档中出现的次数。在这种情况下,您需要计算词向量频率并比较您的搜索查询以确定是否存在匹配项和相应的出现次数。请记住,这将有助于匹配整个单词,并且并非旨在用于在索引文档语料库中对术语进行全文邻近搜索。

于 2012-10-15T19:37:48.287 回答
1

我怀疑您可能会误解您的示例中的某些内容。

我没有在其中看到任何示例正在收集匹配文档中匹配项的数量。也许作者使用这个词是“命中”,这在某种程度上使事情变得混乱。

那里的hits变量将匹配的文档 ID 和分数存储在ScoreDoc的集合中。这hits[index].score是确定文档匹配强度的最合适的方法。

于 2012-10-15T19:48:56.850 回答