2013-01-11 55 views
0

这是我的代码来执行搜索Mysql的选择查询与匹配,并针对问题

SELECT d.deal_id, 
    d.deal_title, 
    d.friendly_url 
    FROM wp_deals AS d 
    WHERE MATCH (d.deal_title) AGAINST ('Historic China eight day tour' IN BOOLEAN MODE) 
    GROUP BY d.deal_id 

它的工作原理fine.and给予14分的结果。 其中之一是

伟大的桑迪海峡两晚自然邂逅游两日落日游&更多。高达$ 1,071折扣!

但是,当我搜索“与”或“多”变成

SELECT d.deal_id, 
    d.deal_title, 
    d.friendly_url 
FROM wp_deals AS d 
WHERE MATCH (d.deal_title) AGAINST ('more' IN BOOLEAN MODE) 
GROUP BY d.deal_id 


SELECT d.deal_id, 
    d.deal_title, 
    d.friendly_url 
    FROM wp_deals AS d 
    WHERE MATCH (d.deal_title) AGAINST ('with' IN BOOLEAN MODE) 
    GROUP BY d.deal_id 

,并没有给出任何结果虽然与多都是自己的。我不是这种类型的搜索查询的专家。

当我与“旅游”,这也是他们的搜索它的工作原理fine.whats去他们的。 不能理解为“旅游”,“有”和“更多”都包含四个字母,也标题。

你们人是天才..

你的建议,所以它会锻炼。

在此先感谢。

回答

0

在布尔全文搜索的停止字适用,如“一些”或“然后” ......常用词是停用词并不相符,如果出现在搜索字符串:http://dev.mysql.com/doc/refman/5.5/en//fulltext-boolean.html

停止字: http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html

最知名的解决方案是禁用列表,或添加/从中删除值:How to reset stop words in MYSQL?

另外:

SELECT d.deal_id, 
    d.deal_title, 
    d.friendly_url 
FROM 
    wp_deals AS d 
WHERE MATCH (d.deal_title) AGAINST ('+more*' IN BOOLEAN MODE) 
GROUP BY d.deal_id 
+0

good.thanks man ... –