如何在MySQL中搜索Soundex()子串?

时间:2012-12-21 18:12:34

标签: mysql soundex

我遇到了Joomla的问题! 3个集成的搜索引擎。索引内容时,此引擎的索引器会创建所谓的soundex值,例如

  

的TestObject,   Testobject 1,   Testobject 2239923,   Textobject ....

都具有与T23123相同的soundex值。

现在我的问题是,如果我搜索Test,那么就不会有任何结果,因为这个术语的soundex值是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值,例如常规查询时使用%符号然后我可以尝试使用一个插件或其他什么。

提到的DIFFERENCE函数here是理想的,如果它在MySQL中可用并准备使用soundex值作为第二个参数。

我在MySQL方面经验不足,不知道如何改进查询以匹配soundex-substrings。

1 个答案:

答案 0 :(得分:7)

你可能想要计算Levenshtein distance;但是如果你只是想找到那些听起来类似于搜索词的记录,你可以删除任何尾随0(仅用于填充),然后用结果前缀搜索soundex字符串:

WHERE t.soundex LIKE CONCAT(TRIM(TRAILING '0' FROM SOUNDEX('test')), '%')