我遇到了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。
答案 0 :(得分:7)
你可能想要计算Levenshtein distance;但是如果你只是想找到那些听起来类似于搜索词的记录,你可以删除任何尾随0
(仅用于填充),然后用结果前缀搜索soundex字符串:
WHERE t.soundex LIKE CONCAT(TRIM(TRAILING '0' FROM SOUNDEX('test')), '%')