我想根据行的标题列选择相似的行。标题列大多有 5 或 6 个六个关键字。你推荐哪种算法?Soundex 也许?
PS:标题列具有 unicode 字符,例如Ç,Ö,Ş...
我的问题答案mysql全文搜索。它还支持unicode。
SELECT *, match(project_title) against('sample project 55') as similarity
FROM projects
WHERE status IN(1, 2, 3, 4, 5, 6) AND id != ? AND match('sample project 55') against(?)
ORDER BY similarity DESC
如果您的意思是拼写和发音相似,我会考虑使用该SOUNDEX
功能。
老实说,我会为 创建一个表keywords(id, external_id, keyword)
,然后将表与自身连接起来,按匹配的数量排序,然后将行取回。
如果您要匹配单行,则可以只选择那一行,以提高连接效率。
这可以与 SOUNDEX 结合使用,以匹配接近的事物