4

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

测试对象,测试对象 1,测试对象 2239923,文本对象 ....

它们都具有相同的 T23123 soundex-value。

现在我的问题是,如果我搜索Test,则不会有任何结果,因为该术语的 soundex-value 是 T230。

搜索引擎使用的查询是:

SELECT DISTINCT t.term_id AS id, t.term AS term
FROM tablename AS t
WHERE t.soundex = SOUNDEX('test')

我检查了这个主题中的 soundex_match 函数,但不幸的是这不能解决我的问题,因为它不比较 soundex 值。

我想避免破解 cms 核心,并想了解是否有某种近似程序可用于比较 soundex 值,例如使用%符号时的常规查询,然后我可以尝试使用插件或其他方式实现。

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

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

4

1 回答 1

8

您可能正在寻找计算Levenshtein 距离;但是,如果您只是想查找那些以听起来与搜索词相似的内容开头的记录,您可以去除任何尾随0(仅用于填充),然后搜索带有结果前缀的 soundex 字符串:

WHERE t.soundex LIKE CONCAT(TRIM(TRAILING '0' FROM SOUNDEX('test')), '%')
于 2012-12-21T18:20:46.947 回答