繁体   English   中英

MySQL全文搜索-搜索短词

[英]MySQL Full-text search - search for short words

我有个问题。 我做了一个简单的搜索引擎,可以按汽车的品牌和型号进行搜索。 由于查询性能和数据库中数据很多的原因,我决定使用全文搜索。 可以,但是现在我遇到了问题:

我想找到所有品牌“ 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

我无权修改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`

搜索返回0行。 为什么? 所有输入字符串(“ BMW”,“ 116”)的最小长度为3。我在做什么错?

问候,马里奥

在处理与匹配时(关于文本长度),我遇到了类似的问题,我的答案是先将字符串加长,然后在喜欢和匹配之间切换以缩短单词。 不是我所说的优雅,但这是我所能做的,因为我也无法访问该配置。

至于第二个问题,您确定默认值不是4吗? 我记得我无法搜索“艺术”一词。 3个字母。 必须与4个字符以下的所有内容一起使用。

除非您有权访问配置文件并可以更改它,否则我几乎无事可做。

更改ft_min_word_len要求重新启动服务器并完全重建全文本索引。

如在这里找到

尝试这个:

搜索结果:“ bmw 116i”

(反对(MATCH(a.title)('+ bmw + 116i“ bmw 116i”'在布尔模式下))

不是最好的解决方案,但可能会有所帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM