[英]Mysql FullText index searching issue
我正在使用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";
查询执行得很好,但是有一个错误,如果您查看列名 ,则会发现MATCH()函数内部的car_trim 。 该列在数据库中只有3种不同类型的值,分别是“ T5”,“ T6”和“ T5 Premier”。
当我在搜索栏中输入“ Premier ”并按Enter时,它将获取结果中包含“ Premier
”一词的结果。 但是,当我键入T5或T6时 ,它将返回一个空记录。 请确保有很多带有car_trim ='T5',car_trim ='T6'或car_trim ='T5 Premier'的记录
我不明白字符串T5
和T6
可能是什么问题。
使用全文搜索时,MySQL有两个关键参数(以及其他一些重要参数)。 关键参数是最小字长和停用词列表。 简而言之,MySQL会忽略少于3个或4个字符(取决于存储引擎)或停用词列表中的词。
您的示例(“ T5”和“ T6”)太短-根据参数默认值。
其他一些配置参数可能是您感兴趣的,例如最大字长和对字有效的字符。
您可以更改用于全文索引的参数,然后重新构建索引。
这是开始理解这一点的好地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.