我的 Joomla 有问题! 3 集成搜索引擎。该引擎的索引器在索引内容时会创建所谓的 soundex-values,例如
它们都具有 T23123 的相同 soundex 值。
现在我的问题是,如果我搜索 Test
,那么不会有任何结果,因为该术语的 soundex-value 是 T230。
搜索引擎使用的查询是:
SELECT DISTINCT t.term_id AS id, t.term AS term
FROM tablename AS t
WHERE t.soundex = SOUNDEX('test')
我检查了 this topic 中的 soundex_match 函数,但不幸的是这不能解决我的问题,因为它不比较 soundex 值。
我想避免破解 cms 核心,并想了解是否有某种近似程序可用于在使用
%
符号时比较常规查询的 soundex 值,然后我可以尝试使用插件或其他方式实现。提到 here 的 MSSQL
DIFFERENCE
函数将是理想的,如果它在 MySQL 中可用并准备使用 soundex 值作为第二个参数。我在 MySQL 中的经验不是很好,也不知道如何改进查询以匹配 soundex-substrings。
最佳答案
您可能希望计算 Levenshtein distance ;但是,如果您只是想查找以听起来与搜索词相似的内容开头的记录,您可以去除任何尾随的 0
(仅用于填充),然后使用结果前缀搜索 soundex 字符串:
WHERE t.soundex LIKE CONCAT(TRIM(TRAILING '0' FROM SOUNDEX('test')), '%')
关于mysql - 如何在 MySQL 中搜索 Soundex() 子字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13995150/