【问题标题】:Allow searching in multiple columns with multiple keywords允许使用多个关键字在多个列中搜索
【发布时间】:2015-12-18 14:48:17
【问题描述】:

这是我的场景:我有一个搜索多个列的搜索

$sql = "SELECT * FROM $this->_table WHERE r_title LIKE ?
   OR r_level LIKE ?
   OR r_section LIKE ?
   OR r_excerpt LIKE ?
   ORDER BY r_id DESC"

这很好用,但例如标题可能是"Squash",部分可能是"Soup",所以如果用户输入"squash soup",它不会返回任何结果。

这有意义吗?我怎样才能让它提供更相关、更合并的响应?

该部分在技术上将被称为 "Soups"not "Soup", 我仍然希望它返回“Squash Soup”,如果该部分真的是 soups, 只需忽略 "s"

【问题讨论】:

    标签: php mysql search pdo


    【解决方案1】:

    您需要使用MySQL's search functionality。像这样的:

    SELECT * FROM table
    WHERE MATCH(r_title, r_level, r_section, r_excerpt)
        AGAINST (? IN BOOLEAN MODE)
    ORDER BY r_id DESC
    

    Boolean search,默认情况下会在搜索短语中查找任何单词,因此无需进行预处理。但是,您需要确保您的表格上有 appropriate indices

    ALTER TABLE table
        ADD FULLTEXT INDEX (r_title),
        ADD FULLTEXT INDEX (r_level),
        ADD FULLTEXT INDEX (r_section),
        ADD FULLTEXT INDEX (r_excerpt);
    

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-14
      • 2017-09-18
      相关资源
      最近更新 更多