Mysql FullText索引搜索问题

时间:2016-08-19 11:37:55

标签: php mysql

我正在使用MySql FullText 索引来搜索数据库中的数据。

以下是query

$search_input_text = 'the_string_to_be_search';
$searchArray = explode(" ", $search_input_text);
$query="SELECT * FROM car_details
        WHERE  MATCH (car_trim) AGAINST ('";
foreach ($searchArray as $word) {
    $query .= "+".$word."* ";
}
$query .= "' IN BOOLEAN MODE) LIMIT $start, $limit";

查询执行正常,但它有一个错误,如果你查看列名称,你会发现 car_trim 位于 MATCH()< / strong>功能。该列在数据库中只有3种不同类型的值,分别是'T5','T6'和'T5 premier'。

当我在搜索栏中输入“总理”并按Enter键时,会获取其值包含单词“Premier”的结果。但是当我输入 T5 T6 时,它会返回一个空记录。请确保有很多记录,其中car_trim ='T5',car_trim ='T6'或car_trim ='T5 Premier'

我没有得到字符串T5T6的问题。

1 个答案:

答案 0 :(得分:2)

使用全文搜索时,MySQL有两个关键参数(以及其他一些重要参数)。关键参数是最小字长和停用词列表。简而言之,MySQL忽略小于3或4个字符(取决于存储引擎)或停用词列表中的单词。

您的示例(&#34; T5&#34;和&#34; T6&#34;)太短 - 基于参数默认值。

其他一些配置参数可能会很有用,例如最大字长和对单词有效的字符。

您可以更改全文索引的参数并重新构建索引。

Here是开始理解这一点的好地方。