正确的全文搜索方法

时间:2013-02-14 15:34:15

标签: php mysql

我正在构建一个搜索功能,必须搜索一些表格。我首先在需要搜索的所有字段上添加了一个FULL TEXT索引(因此在多个字段上有1个索引)。

然后,在我的PHP中,我执行以下查询

SELECT * FROM table WHERE MATCH (field1, field2, field3) AGAINST('search word')

这是正确的做法吗?或者我应该分别在每个字段上添加索引,还要分隔查询(MATCH (field1) AGAINST ... OR MATCH (field2) AGAINST...)。

两者之间有什么区别?

1 个答案:

答案 0 :(得分:1)

据我所知,FULL TEXT索引+ MATCH方法是有效的,不应该有任何问题。只需确保您的3个字段是CHAR,TEXT或VARCHAR。

也许你会对检索MATCH的“得分”感兴趣。可以这样做:

SELECT *, MATCH (field1, field2, field3) AGAINST('search word') as score FROM table WHERE MATCH (field1, field2, field3) AGAINST('search word') ORDER BY score

这个“得分”会告诉你每场比赛有多好。

也许您还应该看看IN BOOLEAN MODE。您必须在AGAINST粒子(AGAINST('search word') IN BOOLEAN MODE)之后将其放置,它将考虑搜索中的运算符,类似于Google搜索。

例如:

+ table:'table'一词必须出现在所有比赛中。

~table:'table'一词不得出现在任何匹配中。