MySQL LIKE%string%不够宽容.还有什么我可以用吗?

i-C*_*ICA 6 mysql sql coldfusion

我有一个客户问他们的搜索,搜索公司名称可以根据用户输入以多种格式搜索,例如存储在数据库中的公司是AJR Kelly Ltd,例如,如果用户搜索" AJR Kelly"发现,使用;

<cfif pctermsCount gt 0>
AND (LOWER(p.name)  LIKE '%#pcTerms#%')
</cfif>
Run Code Online (Sandbox Code Playgroud)

如果他们搜索"凯利"公司被发现,但如果他们搜索像"AJ凯利"或"AJ凯利"这样的字符串的破损版本,则找不到.

有什么我可以做的让它更宽容一点吗?

谢谢.

Cod*_*ian 8

如果您使用的是MyISAM,则可以使用全文索引.请参阅本教程

如果您使用的是其他存储引擎,则可以使用第三方全文引擎,如sphinx,它可以充当mysql存储引擎或可以查询的单独服务器.

使用MySQL全文索引,搜索A J Kelly将匹配AJ Kelly(不要混淆事项,但A,J和AJ将被忽略,因为它们在默认情况下太短而且它会与Kelly匹配.)通常全文更宽容(并且通常比LIKE'%string%')因为允许部分匹配,然后可以根据相关性进行排名.

您还可以使用SOUNDEX通过索引单词的语音等价物来使搜索更加宽容,并通过在搜索字词上应用SOUNDEX然后使用它们搜索索引来搜索它们.例如,使用soundex mary,marie并且marry都将匹配.