我正在使用Solr通过PHP搜索我网站的所有方面。我正在尝试实现一项功能,但无法找到有关如何完成功能的任何信息。
我有一组文件(评论),每组都有一个特定的产品。
我想找到单个产品的多个评论中出现的独特1-2字关键字(无止损字),并计算它们出现的评论数量。
有了这个,我想展示前X个关键字,他们所在的评论数量,以及每个关键字的单个热门评论突出显示关键字的使用。
编辑:
一旦我有多个评论中出现的唯一(非停止词/常用词)关键字列表,我想根据它们在评论中出现的次数对它们进行排名。例如,如果人们正在撰写有关相机的评论,则关键字可能如下所示:
昂贵(显示在7条评论) 快门速度(显示在5条评论) 图片质量差(在3条评论中显示)
根据评论数量对这些关键字进行排名后,我想为每个关键字选择1个评论,并显示突出显示该关键字的评论。例如:
“......不幸的是,这款相机对于你得到的东西来说太昂贵了......”(在7条评论中) “...... SHUTTER SPEED对于......来说太慢了”(在5条评论中) “...... POOR IMAGE质量是相机最大的垮台......”(3条评论)
至于何时运行,我仍然不确定。可能是实时(当您查看产品,然后缓存X时间),每当发布新评论时,标记要更新的产品,或每天在cronjob上标记等。它不会同时针对所有关键字运行,它将针对单个产品的所有评论中的所有关键字运行。然后重复每个产品。
希望更有意义。
任何有关如何在Solr中完成此任务的帮助将不胜感激。
答案 0 :(得分:1)
听起来你正在寻找的是ShingleFilter。你可以用它来制作unigrams / bigrams(可能带有一个copyfield),然后获取这些令牌的统计数据来生成你的界面。
答案 1 :(得分:0)
这项任务并不特别适合solr。你使用solr获得的唯一东西是词干/停止词支持,如果在本地算法中实现,它会快得多。我会在数据库中创建一个新表,用于“review_keyword”将评论映射到关键字单例和对。在插入新评论时,还要为评论中的每个关键字添加映射到单独的行(这是词干/停止词语开始的地方)。如果要查找产品的评论以获取产品评论中的热门关键字,并从该组中进行评论,则可以在此表格中运行联接选择。根据您的使用情况,这可以更好地运行更新,而不是查询。
答案 2 :(得分:0)
这看起来像文本解析器而不是solr的工作。您可能需要一个可能在python中的脚本(因为它具有良好的文本解析库),它可以查看评论中的所有单词,然后在每个评论(或)中为您提供最重要的单词。然后,您可以在这些最常出现的单词的任意一侧索引几个单词,并为您的文档创建摘要(在本例中为产品),并在Solr中将其编入索引,以作为搜索结果的一部分返回。