Puz*_*uzo 1 php mysql full-text-search search-engine codeigniter
我有个问题。我做了一个简单的搜索引擎,可以按汽车的品牌和型号进行搜索。由于查询性能和数据库中数据很多的原因,我决定使用全文搜索。可以,但是现在我遇到了问题:
我想找到所有品牌“ Audi”和型号“ Q7”的汽车。现在,我有这个SQL查询,但是由于字长“ Q7”,它无法正常工作:
SELECT `a`.`id`, `a`.`title`, `a`.`askprice`, `a`.`description`, `a`.`picture`
FROM (`mm_ads` as a)
WHERE `a`.`category` = '227'
AND `a`.`askprice` >= '0'
AND `a`.`askprice` <= '144000'
AND (MATCH(a.title) AGAINST ('+audi +q7' IN BOOLEAN MODE ))
GROUP BY `a`.`id`
ORDER BY `a`.`id` ASC
LIMIT 30
Run Code Online (Sandbox Code Playgroud)
我无权修改MySQL配置文件,将其设置ft_min_word_len为值2。现在,值是3。还有其他方法可以解决吗?
这是另一个问题:
我想获得所有品牌的宝马汽车和型号116的汽车。例如,我有一辆名为的汽车BMW, 1, 116i。我的SQL查询是:
`SELECT `a`.`id`, `a`.`title`, `a`.`askprice`, `a`.`description`, `a`.`picture`
FROM (`mm_ads` as a)
WHERE `a`.`category` = '227'
AND `a`.`askprice` >= '0'
AND `a`.`askprice` <= '144000'
AND (MATCH(a.title) AGAINST ('+bmw +116' IN BOOLEAN MODE))
GROUP BY `a`.`id`
ORDER BY `a`.`id` ASC
LIMIT 30`
Run Code Online (Sandbox Code Playgroud)
搜索返回0行。为什么?所有输入字符串(“ BMW”,“ 116”)的最小长度为3。我在做什么错?
问候,马里奥
在处理与匹配时(关于文本长度),我遇到了类似的问题,我的答案是先将字符串加长,然后在喜欢和匹配之间切换以缩短单词。不是我所说的优雅,但这是我所能做的,因为我也无法访问该配置。
至于第二个问题,您确定默认值不是4吗?我记得我无法搜索“艺术”一词。3个字母。必须与4个字符以下的所有内容一起使用。