【发布时间】:2014-10-14 10:12:06
【问题描述】:
我在 mysql 中有 50 行。每行包含多个以逗号分隔的关键字。我有另一个表,其中包含一些描述。我想遍历所有描述,并想找出哪一行关键字与该描述最匹配。我怎么能做到这一点。我正在使用 PHP 和 Mysql。我也在使用狮身人面像。但那里没有多少运气。 还有其他方法吗?
提前致谢:)
【问题讨论】:
标签: php mysql full-text-search sphinx
我在 mysql 中有 50 行。每行包含多个以逗号分隔的关键字。我有另一个表,其中包含一些描述。我想遍历所有描述,并想找出哪一行关键字与该描述最匹配。我怎么能做到这一点。我正在使用 PHP 和 Mysql。我也在使用狮身人面像。但那里没有多少运气。 还有其他方法吗?
提前致谢:)
【问题讨论】:
标签: php mysql full-text-search sphinx
好吧,您可以按照常规方式进行操作。循环遍历所有关键字列表,并找到它们匹配的文档。将该列表存储在某处,然后可以查看它以直接获取反向列表。
否则,您正在查看 Prospective Search 的变体(提及名称,因此可以使用它查找进一步的阅读材料!)
哪个狮身人面像可以做到。在关键字表上建立索引。然后遍历每个描述并构建一个查询 - 使用'quorum'语法。所以查询只需要匹配一个(或多个)单词。
对于每个文档,sphinx 将按相关顺序返回一个可能的关键字匹配列表。可以只取顶部文档作为“最佳匹配”
关键是不要取所有从 sphinx 返回的关键字文档,因为它会包含许多非常低质量的匹配项。基本上需要post处理结果,并丢弃结果的尾部。
使用 SPH_RANK_MATCHENY 是一个很好的排名计算方法。
【讨论】: