我遇到了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')
Run Code Online (Sandbox Code Playgroud)
我在本主题中检查了soundex_match函数,但遗憾的是,这无法解决我的问题,因为它不会比较soundex值.
我想避免破解cms核心,并且想要了解是否有某种近似过程可用于比较soundex值,例如常规查询时使用%符号,然后我可以尝试使用插件或其他任何方法来实现.
这里DIFFERENCE提到的MSSQL 函数是理想的,如果它在MySQL中可用并准备使用soundex值作为第二个参数.
我在MySQL方面不是很有经验,也不知道如何改进查询以匹配soundex-substrings.
你可能想要计算Levenshtein距离 ; 但是如果你只是想找到那些听起来类似于搜索词的记录,你可以删除任何尾随0(仅用于填充),然后搜索带有结果前缀的soundex字符串:
WHERE t.soundex LIKE CONCAT(TRIM(TRAILING '0' FROM SOUNDEX('test')), '%')
Run Code Online (Sandbox Code Playgroud)