0

我知道那里有一个巫师可以回答这个问题......

我有一个列出 500 多种葡萄酒的 PHP / MySQL 数据库。使用表格,网络访问者可以按葡萄酒名称、国家、年份等搜索数据库。

我测试了两 (2) 个不同的查询。

我想使用的拒绝返回针对美国的国家特定搜索,但与西班牙、澳大利亚、意大利、加拿大或智利(甚至美国 - 我测试过)没有问题。

仅当用户输入恰好与美国产品匹配的葡萄酒名称年份等时,才会显示美国。否则,它将美国视为不存在。

另一个代码(底部)返回所有美国搜索,但不搜索我需要的多个列/术语。

  1. 此代码将找不到针对美国的特定国家/地区搜索

       $cob=mysql_real_escape_string($_POST['user-entry']);
    
    // remove the line below to prevent searching multiple terms
       $cob = '+' . str_replace(' ',' +',$cob);
    
      $sql = sprintf ( 
      "SELECT CSPC, Country, Producer, Wine, Year, Price,
      MATCH ( CSPC, Country, Producer, Wine, Year ) 
      AGAINST ( '&s' IN BOOLEAN MODE )  
      FROM winecellar WHERE 
      MATCH ( CSPC, Country, Producer, Wine, Year ) 
      AGAINST ( '%s' IN BOOLEAN MODE )", $cob, $cob ) . $pricerange;
    
  2. 此代码将找到针对美国的特定国家/地区搜索

      $cob=mysql_real_escape_string($_POST['user-entry']);
    
      $sql="SELECT ID, CSPC, Country, Producer, Wine, Year, Price 
      FROM winecellar WHERE
      ( CSPC LIKE '%" . $cob .  "%' 
      OR Country LIKE '%" . $cob ."%' 
      OR Producer LIKE '%" . $cob ."%' 
      OR Wine LIKE '%" . $cob ."%' 
      OR Year LIKE '%" . $cob ."%' )" . $pricerange;
    
    • MySQL 服务器版本:5.1.65-cll
    • 国家 = varchar (20)
    • 国家 = NULL 否
    • 全文索引:国家、生产商、葡萄酒、年份

所以我的问题是,是什么阻止了多术语代码(在顶部块中)将 USA 识别为有效查询?

任何帮助将不胜感激,谢谢大家。

克里斯

4

1 回答 1

3

您正在使用FULLTEXT索引。默认最小字长为 4。忽略三个字母的单词。 是更改默认值的参考。

于 2012-12-12T13:26:20.423 回答