我的 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/

10-11 01:38