2010-10-09 96 views
1

我知道大多数时候人们只是做了搜索数据库PHP的MySQL

LIKE '%$search_query%' 

但看到的是,在我的情况下,有人可能会像

那头牛是脂肪寻找的东西

现在,事情是在我的数据库我不会是正好把它作为“牛胖”我会保存它像“肥牛”,所以使用

LIKE '%$search_query%' 

不起作用。

任何人都可以指出我正确的方向来搜索我的数据库的有效方法,就像我已经解释过的一样吗?

感谢

回答

4

您正在寻找full-text search,与默认最小字长有4默认的限制,所以它不会对你的例子工作。

,在这做包含布尔模式“羊”记录搜索“房子”和“粮仓”的一个例子:

SELECT * FROM table WHERE MATCH (columnname) 
     AGAINST ('+house +barn -sheep' IN BOOLEAN MODE); 

另外,自然语言可以更好地为完整的句子。

尽管全文搜索是一个相当复杂的领域,但有许多注意事项和疑难问题。值得仔细阅读手册。

+0

好吧,我得到它的工作,但现在有些奇怪的原因,我有1个问题。当我搜索“Like”(当它应该是)时,它不会返回任何结果,但它会返回所有其他内容的罚款。它可以忽略它,因为它通常用于mysql查询字符串? – 2010-10-09 15:37:23

+0

@Belgin这就是为什么我你需要阅读手册的陷阱:)请参阅[mySQL停用词](http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html) – 2010-10-09 15:46:30