我需要在索引中找到大多数出现的单词或单词组,这意味着大多数出现的文本可能是单词本身或单词组。非常类似于twitters趋势主题(没有主题标签实体)。 Lucene是否提供了某种方法,或者我如何在海量数据中实现这一点。如果问题不清楚,我可以举出更具体的例子。我顺便使用java和Lucene 3.5。
快速编辑“单词组”最多可包含3个单词。让我们说在一个大文本中我有“是”500次“天气”这个词100次“漂亮”300次和单词组“天气好”90次。我需要找出“天气好”的出现对我来说很重要。当然,我需要查看每个索引词......
谢谢。
答案 0 :(得分:0)
如果要查找最大长度为3的连续令牌的大多数序列,可以将问题视为搜索最常见的N-gram,如问题How to get frequently occurring phrases with Lucene中所述。
在您的情况下,您可能不需要Solr,请参阅this little code,您只需计算每个生成的N-gram,并使其显示的次数大于所需的阈值。
有效计算这些Ngrams的问题更加困难。如果它们不是很多(例如,少于1~2M)你可以使用HashMap。
如果有更多的数量你可以尝试使用有趣的计数最小草图算法,那么有一个implementation但是我个人从未使用它,也不知道它有多好。