【问题标题】:Getting most frequent terms in a subset of indexed lucene documents在索引的 lucene 文档的子集中获取最常用的术语
【发布时间】:2013-09-16 21:30:44
【问题描述】:

让我们假设以下情况。

  • Lucene 文档:ArticleDocument

    字段:{Id, text, publisherId}

  • 一个发布者可以发布多篇文章。

问题

我想为每个 Publisher Id 构建词云(最常见的词,shingles)。

经过我的调查,我可以找到方法来获取整个索引或文档但不是文档子集的最常用术语。我找到了similar question,但那是 Lucene 2.x我希望在最近的 Lucene 中存在一种有效的方法。

请您指导我在 Lucene 4.x(首选)或 3.x(最新版本 3)中执行该操作的方法。

请注意,我不能让每个 Publisher 都成为一个将所有文章都附加到一个字段的文档。

那是因为我希望云中的这些词可以搜索到相应的文章(通过相同的发布者 ID)作为结果。

我不确定维护两种类型的 lucene 文档(文章和发布者)在维护和性能方面是否是一个好主意。

【问题讨论】:

    标签: solr lucene tag-cloud word-cloud


    【解决方案1】:

    使用 Solr 4.X 版本中提供的 Pivot Faceting。枢轴分面允许您在父分面的结果中进行分面。

    在索引时使用 Shingle Filter Factory. 为“文本”字段生成 Shingled 令牌

    对于分面,在您的查询中添加 facet=true&facet.pivot=publisherid,text 参数。

    示例查询:

    http://localhost:8983/solr/collection1/select?q=*:*&wt=json&indent=true&facet=true&facet.pivot=publisherid,text
    

    查询将返回每个“publisherid”的频繁使用的带状疱疹/单词。

    【讨论】:

    • 我从没想过我可以通过开箱即用的功能来完成它。非常感谢您指出构面功能。
    • 嗨.. @phani 抱歉回复晚了:(添加了我的答案:)
    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2012-02-14
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多