【问题标题】:Find count of given words in Java Lucene library在 Java Lucene 库中查找给定单词的计数
【发布时间】:2012-10-15 19:17:14
【问题描述】:

在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。

【问题讨论】:

    标签: java lucene


    【解决方案1】:

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

    在他们身上看到这个问题 - How to count term frequency for set of documents?

    还有这个 - Get highest frequency terms from Lucene index

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

    【讨论】:

      【解决方案2】:

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

      我没有看到该示例在其中收集匹配文档中匹配项的数量的任何内容。也许作者使用“命中”这个词有点混淆了事情。

      hits 变量将匹配的文档 ID 和分数存储在 ScoreDocs 的集合中。 hits[index].score 是最适合用来确定文档匹配强度的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-28
        • 1970-01-01
        • 2012-09-10
        • 2015-08-15
        • 2012-10-01
        • 1970-01-01
        • 2021-06-12
        相关资源
        最近更新 更多