我想在我的网站上找到类似的帖子,具体取决于url slug。 说我有以下五个slu
i-am-a-slug /*the slug i want to compare*/
i-am-another-slug /* 3 same words */
i-am-an-ant /* 2 same words */
the-slug-life /* 1 same word */
foo-bar /* 0 same words */
目前我正在使用以下代码来确定比较slug中是否有任何类似的单词
SELECT *
FROM News
WHERE News.slug != "i-am-a-slug"
ORDER BY CASE
WHEN News.slug REGEXP "i|am|a|slug" THEN 1
ELSE 2
它甚至不能很好地工作......示例中的a
之类的单词会在我的数据库中的几乎所有slug中给出回击...在示例中,甚至是slug { {1}}将被退回。
我似乎无法弄清楚如何选择一个变量foo-bar
来计算每个测试slug中所有相同的单词(请参阅注释我想获得的解决方案的第一个代码块),所以我可以
same-words-count
还是有更好的方法吗?
非常感谢你,对不起我的mysql最近有点生疏...
答案 0 :(得分:0)
您正在寻找的是倒排索引:http://en.wikipedia.org/wiki/Inverted_index
根据数据量以及您实际要对结果做什么(您是否需要更新它,是否需要在网站上显示等)您可能希望使用它来解决问题您选择的编程语言或使用一些全面的全文搜索解决方案。纯SQL不适合这个。