2011-09-20 78 views
0

我有2个mysql全文搜索查询返回一组不同的结果。Mysql全文搜索:要where子句,还是不要where子句?

SELECT e.id AS e__id, 
MATCH(e.subtitle, e.summary, e.title, e.prtext) AGAINST ('lorem') 
FROM exhibitions e 

将返回一个可预测组的7行(I在表中具有10整体),每一个都具有包含单词“LOREM”的记录的ID。

然而,当我介绍其中返回条款

SELECT e.id 
FROM exhibitions e 
WHERE MATCH(e.subtitle, e.summary, e.title, e.prtext) AGAINST ('lorem') 

没有行。

这两个查询有什么区别?

回答

0

其实,这个问题我有一些全文indicies对我的表结构,当我真的只需要一个。以下是whereand子句的正确查询:

SELECT e.id AS e__id, 
    e.enabled AS e__enabled, 
    e.rewrite AS e__rewrite, 
    e.title AS e__title, 
    e.subtitle AS e__subtitle, 
    e.summary AS e__summary, 
    e.type AS e__type, 
    e.feature_home AS e__feature_home, 
    e.date_start AS e__date_start, 
    e.date_end AS e__date_end, 
    e.prtext AS e__prtext, 
    e.last_update AS e__last_update, 
    e.file_id1 AS e__file_id1, 
    e.file_id2 AS e__file_id2, 
    e.file_id3 AS e__file_id3, 
    e.file_id4 AS e__file_id4, 
    e.file_id5 AS e__file_id5 
FROM exhibitions e 
WHERE MATCH(e.subtitle, e.summary, e.title, e.prtext) AGAINST ('lorem') 
     AND e.enabled = 1 
0

尝试添加* IN BOOLEAN MODE

SELECT *,MATCH (ft_search_field) AGAINST ('lorem*' IN BOOLEAN MODE) AS Score 
FROM table_name 
WHERE MATCH (ft_search_field) AGAINST ('lorem*' IN BOOLEAN MODE)