2016-08-19 187 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

哦,就是這個問題,謝謝@戈登讓我意識到這一點。 –