是否有可能在mysql的全文搜索中搜索整个给定的单词

时间:2012-09-05 12:46:20

标签: mysql full-text-search

我在3列上使用带有mysql的全文搜索。假设数据如下:

  1. Row1包含两列“Greater Noida Expressway”和“Sector 91”。
  2. Row2包含两列“Ho Chi Minh Marg”和“Greater Kailash 2”。
  3. Row3包含两列“Rohini”和“Sector 91”
  4. 现在,如果我用

    查询
    SELECT * FROM trafficker.traffics WHERE MATCH (column1, column2) AGAINST ('Greater Noida'); 
    

    上面的查询将导致前两行,因为匹配将在'Greater'和'Noida'上完成。在Row2的'Greater Kailash'中也可以找到'Greater':|

    有什么方法可以阻止搜索“空间”并将大诺伊达视为一个搜索短语而不是用“空格”分隔?

    这将非常有用,因为它可以帮助我过滤噪音,因为实际数据会非常庞大​​。

    提前致谢!

    修改 另一个问题是,如果我搜索Sector 91.它将只搜索Sector并忽略91(因为这少于4个字符)。有没有办法解决这个问题,除了下载源代码并编译它们。因为我确信它不能在共享服务器上运行:(

2 个答案:

答案 0 :(得分:1)

检查'在布尔模式下'选项:

http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

您可以将单词用引号括起来,例如:

SELECT * FROM trafficker.traffics WHERE MATCH (column1, column2) AGAINST ('"Greater Noida"' IN BOOLEAN MODE); 

这应该让你接近你想要的。

答案 1 :(得分:1)

我们可以通过在布尔模式下搜索短语之前添加+和 - 来定义搜索的优先级

  • 包括那个词
  • 排除该字词 对于Eg

    SELECT * FROM trafficker.traffics WHERE MATCH (column1, column2) AGAINST ('"+mobile -nokia"' IN BOOLEAN MODE);