我讨厌数据库中的 4000 多个广告。我在字段标题、型号和描述上使用全文索引。
在 MySQL 中,我将 ft_min_word_len 的值从 4 更改为 3。
其实并不是所有的结果都匹配。
这是一个简单的请求:
SELECT * ,
MATCH (
anno_modele, anno_titre, anno_desc
)
AGAINST (
"330"
) AS relevance
FROM (
`annonce`
JOIN possede
USING ( `anno_id` )
JOIN annonceur
USING ( `ann_id` )
JOIN cat_lang
USING ( `cat_id` )
JOIN lang_pays
USING ( `pays_id` )
JOIN marque
USING ( `mar_id` )
WHERE `mar_id` =867
AND MATCH (
anno_modele, anno_titre, anno_desc
)
AGAINST (
" 330"
)
AND `cat_id`
IN (
'3'
)
AND `anno_active` =1
AND `anno_mode` =1
AND `lang_pays`.`lang_id` = '3'
GROUP BY `anno_id`
ORDER BY `anno_prix` , `relevance` DESC
LIMIT 15
这符合我的 3 个结果。 330 只是字段“anno_model”。
如果做一个像 anno_modele LIKE '%330%'
,它匹配我 9 个结果。
这里是 MATCH AGAINST 匹配的结果:
这里是LIKE匹配的结果
如你所见,当它存在一个空格时......结果与MACTH AGAINST不匹配
问题是我的要求还是其他原因?
请帮帮我 =)
最佳答案
尝试使用 * 通配符
...AGAINST ('*330*') ...
关于Mysql搜索引擎喜欢并匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14984130/