2011-08-27 44 views
0

我使用下面的代码,例如:首先从全文搜索中获取精确匹配?

SELECT *, (MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker')) AS score FROM `example_table` WHERE MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker')) order by score DESC; 

然而,即使在wm列中存在精确匹配,完全匹配不会出现untiil第八结果。前面的所有内容都有这个短语,但也有一些以下的文字。我检查了locn,gns字段,看看他们是如何比较的,没有什么东西可以让其他人获得更高分。

我做了一些关于使用BOOLEAN MODE的阅读,但没有任何我在那里读到的东西似乎会帮助我的需求。

回答

1

好吧,如果这能帮助别人,我能够实现我希望通过这样做:

SELECT *, 
    CASE WHEN wm = 'foot locker' THEN 1 ELSE 0 END AS score, 
    MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker') AS score2 
FROM 
    `example_table` 
WHERE 
    MATCH (`wm`, `locn`, `gns`) AGAINST('foot locker')) 
ORDER BY 
    score DESC, score2 DESC; 
+0

此查询救了我的一天 –