我正在使用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'
我没有得到字符串T5
和T6
的问题。
答案 0 :(得分:2)
使用全文搜索时,MySQL有两个关键参数(以及其他一些重要参数)。关键参数是最小字长和停用词列表。简而言之,MySQL忽略小于3或4个字符(取决于存储引擎)或停用词列表中的单词。
您的示例(&#34; T5&#34;和&#34; T6&#34;)太短 - 基于参数默认值。
其他一些配置参数可能会很有用,例如最大字长和对单词有效的字符。
您可以更改全文索引的参数并重新构建索引。
Here是开始理解这一点的好地方。