快速搜索类似的文本

时间:2014-12-22 11:27:22

标签: php mysql text

我正在支持用户可以发布帖子的公共博客。一些用户有超过一千种不同的文本,他们可能不记得,他们已经发布了一些文本。我想帮助用户不要发布重复项。

比较文本的确切相同性并不好 - 用户可能稍微改变了文本,或者格式化,或者从不同的程序中复制等等。所以如果现有数据库中有类似的文本,我需要快速估算。 / p>

我的技术堆栈包括PHP,MySQL和Redis。如何使用这些或其他工具解决我的问题?

2 个答案:

答案 0 :(得分:1)

PHP有一个名为similar_text的函数,您可以使用它来计算匹配字符的数量或百分比的相似度。

http://php.net/manual/en/function.similar-text.php

然后,您可以检查给定文本是否在旧博文的某个范围内。

如果您不想检查文本中的相似性,可以尝试根据原始博客的标签或博客的主题标记帖子。然后向用户显示他们使用类似标签创建的帖子。

答案 1 :(得分:1)

您可以在全文索引列中使用MySQL的匹配

举个例子:

SELECT table.*, 
MATCH(userText) AGAINST ('this is user input') AS relevancy 
FROM table 
ORDER BY relevancy DESC;

因此,这将为您提供按相关性排序的结果。

不要忘记在 userText 列添加全文索引。