【发布时间】:2010-10-09 15:10:41
【问题描述】:
我知道大多数时候人们只是做一个
LIKE '%$search_query%'
但事实是,在我的情况下,有人可能正在搜索类似的东西
那头牛很肥
现在,这件事在我的数据库中,我不会将它完全存储为“牛很胖”,而是将其存储为“肥牛”之类的东西,所以使用
LIKE '%$search_query%'
没用。
谁能像我解释的那样为我指明正确的方向,以有效地搜索我的数据库?
谢谢
【问题讨论】:
我知道大多数时候人们只是做一个
LIKE '%$search_query%'
但事实是,在我的情况下,有人可能正在搜索类似的东西
那头牛很肥
现在,这件事在我的数据库中,我不会将它完全存储为“牛很胖”,而是将其存储为“肥牛”之类的东西,所以使用
LIKE '%$search_query%'
没用。
谁能像我解释的那样为我指明正确的方向,以有效地搜索我的数据库?
谢谢
【问题讨论】:
您正在寻找full-text search,默认最小字长默认为4,因此不适用于您的示例。
在不在布尔模式中包含“sheep”的记录中搜索“house”和“barn”的示例:
SELECT * FROM table WHERE MATCH (columnname)
AGAINST ('+house +barn -sheep' IN BOOLEAN MODE);
或者,自然语言可能更适合完整的句子。
不过,全文搜索是一个相当复杂的领域,有许多注意事项和陷阱。值得仔细阅读手册。
【讨论】: