【问题标题】:Fulltext search only returns exact matches全文搜索仅返回完全匹配
【发布时间】:2009-09-01 07:17:00
【问题描述】:

我有以下脚本

select c.id 
from ".TBL_COUPONS." as c 
inner join ".TBL_BUSINESS." as b 
on c.business_id = b.business_id 
inner join ".TBL_BLOCATION." as l 
on c.business_id = l.business_id 
where 
(match(c.name) against ('$search') 
    or 
match (b.name,b.category,b.subcat) against ('$search')) 
and l.zip = '$zip'

为什么这只会返回完全匹配?例如,如果我 $search for locksmith 什么都没有出现。 但如果我搜索锁匠,我会得到两个结果。 (两个搜索都包含 $zip = '75061')

【问题讨论】:

    标签: mysql


    【解决方案1】:

    一种方法是用通配符替换最后几个字符并在布尔模式下执行 MATCH () AGAINST

    在 php 中搜索词“locksmith”应更改为“locksmith*”,您的代码将是这样的

    match(c.name) against ('$search' IN BOOLEAN MODE) 
    

    出于一般目的,您应该从原始搜索词中的单词中删除“s”、“ed”、“ing”等,并在末尾添加通配符 *。

    【讨论】:

      【解决方案2】:

      fulltext restrictions 你的桌子好吗?

      【讨论】:

      • 拉丁语 1 是多字节字符集吗?
      【解决方案3】:

      这就是全文匹配的工作原理。它不知道复数并匹配整个单词。这个问题时不时出现。有时,当您看到生成的建议“您的意思是...”时,这是一个试图解决这个确切问题的页面。

      【讨论】:

      • 我应该使用 LIKE 吗?我需要变体。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多