如何使用Lucene获得频繁出现的短语


问题内容

我想与Lucene交流一些经常出现的短语。我从TXT文件中获取了一些信息,并且由于没有短语信息而失去了很多上下文,例如“信息检索”被索引为两个单独的词。

怎样获得这样的短语?我在互联网上找不到任何有用的东西,所有的建议,链接,提示,尤其是示例都值得赞赏!

编辑: 我只按标题和内容存储我的文档:

 Document doc = new Document();
 doc.add(new Field("name", f.getName(), Field.Store.YES, Field.Index.NOT_ANALYZED));
 doc.add(new Field("text", fReader, Field.TermVector.WITH_POSITIONS_OFFSETS));

因为对于我而言,最重要的是文件的内容。标题通常根本不是描述性的(例如,我有很多PDF学术论文,其标题是代码或数字)。

我迫切需要从文本内容中索引出现的短语,现在我看到这种简单的“词袋”方法效率不高。


问题答案:

朱莉娅,看来您正在寻找的是n-gram,特别是Bigrams(也称为搭配)。

这是关于从Manning和Schutze的统计自然语言处理基础中找到搭配(PDF)的一

为了使用Lucene做到这一点,我建议将SolrShingleFilterFactory一起使用。请参阅此讨论以获取详细信息。