我正在支持用户可以发布帖子的公共博客。一些用户有超过一千种不同的文本,他们可能不记得,他们已经发布了一些文本。我想帮助用户不要发布重复项。
比较文本的确切相同性并不好 - 用户可能稍微改变了文本,或者格式化,或者从不同的程序中复制等等。所以如果现有数据库中有类似的文本,我需要快速估算。 / p>
我的技术堆栈包括PHP,MySQL和Redis。如何使用这些或其他工具解决我的问题?
答案 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 列添加全文索引。