0

可能重复:
如何使用 Lucene 获取频繁出现的短语

我需要在索引中找到出现次数最多的词或词组,这意味着出现次数最多的文本可能是词本身或词组。非常类似于推特的热门话题(当然没有标签实体)。Lucene 是否提供了某种方法来做到这一点,或者我如何在海量数据中实现这一点。如果问题不清楚,我可以举出更具体的例子。顺便说一句,我正在使用 java 和 Lucene 3.5。

快速编辑“词组”最多可以包含 3 个词。假设在一个大文本中,我有“是”500 次“天气”100 次“好”300 次和词组“天气很好”90 次。我需要确定“天气很好”的出现对我来说是否重要。当然,我需要查看每个索引词...

谢谢你。

4

1 回答 1

1

如果您想找到最大长度为 3 的最频繁出现的连续标记序列,则可以将问题视为搜索最频繁的 N-gram,如问题如何使用 Lucene 获取频繁出现的短语中
所述在您的情况下,您可能不需要不需要 Solr,看看这个小代码,你只需要计算每个生成的 N-gram,并保持那些出现的次数比所需阈值大几倍。有效计数这些 Ngram 的问题更加困难。如果它们不是很多(例如少于 1~2M),您可以使用 HashMap。
如果数量更多,您可以尝试使用有趣的 count min sketch 算法,有一个实现,但我个人从未使用过它,也不知道它有多好。

于 2012-12-21T16:41:07.813 回答