2016-08-19 185 views
1

我正在使用MySql FullText索引来从数据库中搜索数据。Mysql全文索引搜索问题

这里是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"; 

执行查询时不错,但它有一个bug,如果你看一下列名你会发现car_trim这是MATCH()内功能。该列在数据库中只有3种不同类型的值,分别是'T5','T6'和'T5总理'。

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

我没有得到什么可以与琴弦T5T6是问题。

回答

2

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

您的示例(“T5”和“T6”)太短 - 基于参数默认值。

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

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

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

+0

永远不会停止学习;-)一个是* moi *。 –

+0

哦,就是这个问题,谢谢@戈登让我意识到这一点。 –