【问题标题】:Solr common keyword/phrasesSolr 常用关键字/短语
【发布时间】:2011-02-17 10:04:56
【问题描述】:

我通过 PHP 使用 Solr 来搜索我网站的各个方面。我正在尝试实现一项功能,但找不到任何有关如何完成它的信息。

我有一组文档(评论),每个文档都关于一个特定的产品。

我想找到出现在单个产品的多个评论中的唯一 1-2 词关键字(无停用词),并计算它们出现在多少评论中。

一旦我有了这个,我想显示前 X 个关键字、它们所在的评论数量,以及每个突出显示该关键字使用的单个热门评论。

编辑:

一旦我有一个出现在多个评论中的唯一(非停用词/常用词)关键字列表,我想按它们在评论中出现的次数对它们进行排名。例如,如果人们正在撰写有关相机的评论,则关键字可能如下所示:

昂贵(出现在 7 条评论中) 快门速度(出现在 5 条评论中) 形象不佳(出现在 3 条评论中)

将这些关键字按评论数量排序后,我想为每个关键字选择 1 条评论,并显示这些评论突出显示该关键字。例如:

“......不幸的是,这台相机对于你得到的东西来说太贵了......”(在 7 条评论中) “……快门速度太慢了……”(共 5 条评论) “......糟糕的图像质量是相机最大​​的失败......”(在 3 条评论中)

至于何时运行,我仍然不确定。可能是实时的(当您查看产品时,然后缓存 X 时间),每当发布新评论时,将产品标记为要更新,或在每天的 cronjob 上等。它不会一次针对所有关键字运行,它将针对单个产品的所有评论中的所有关键字运行。然后对每个产品重复。

希望这更有意义。

任何有关如何在 Solr 中完成此操作的帮助将不胜感激。

【问题讨论】:

  • 你能澄清一下这个问题吗?你是第4段对我来说没有意义。你如何定义顶级?哪个突出显示?你想同时对所有关键字运行这个吗?

标签: lucene solr keyword similarity


【解决方案1】:

在我看来,您正在寻找的是 ShingleFilter。您可以使用它来生成 unigrams/bigrams(可能带有复制字段),然后获取这些令牌的统计信息以生成您的界面。

【讨论】:

    【解决方案2】:

    这个任务不是特别适合 solr。使用 solr 获得的唯一好处是词干/停用词支持,如果在本地算法中实现会更快。我会在数据库中为“review_keyword”将评论映射到关键字单例和配对创建一个新表。插入新评论时,还要为评论中的每个关键字添加一个映射到单独的行(这是词干/停用词的作用)。当您想要查找产品评论以获取产品评论中的热门关键字以及该集合中的评论时,您可以跨此表运行连接选择。根据您的使用情况,这会更好地在更新而不是查询上运行。

    【讨论】:

      【解决方案3】:

      这看起来像是文本解析器而不是 solr 的工作。您可能需要一个 Python 脚本(因为它具有良好的文本解析库),该脚本查看评论中的所有单词,然后为您提供每条评论(或)所有评论中出现次数最多的单词及其计数。然后,您可以索引这些出现频率最高的单词两侧的几个单词,并为您的文档(在本例中为产品)创建一个摘要,并在 Solr 中对其进行索引,以作为搜索结果的一部分返回。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-05
        相关资源
        最近更新 更多