Man*_*ani 2 mysql subquery php mysql-5.6
我想用 [space] (Ascii 32) 作为其中的一部分在 mysql DB 中搜索文本。但我没有得到正确的结果。
我的 MySql 查询是:
SELECT count(id) as total
, MIN(product_price) as min_price
, MAX(product_price) as max_price
FROM `products_details`
WHERE subcat_id = 1026
AND MATCH(alternate_name, product_desc, keywords)
AGAINST ('+moto +g +plus +(>mobile <mobiles)'; IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)
我有以下问题:
AGAINST ('+moto +g +plus +(>mobile <mobiles)'
我想moto g plus使用上面的查询搜索字符串移动。我想在g. 例如,moto "SPACE"g"SPACE"。
我尝试了以下 2 个解决方案,但它不起作用。
[[:空间:]]
AGAINST ('+moto +[[:space:]]g[[:space:]] +plus +(>mobile <mobiles)'
和
AGAINST ('+moto +\\ g\\ +plus +(>mobile <mobiles)'==> 我在此查询中的 \ 后面有一个空格字符(Ascii 32)
他们两个都没有工作。
你能告诉我应该有什么吗?
编辑:ft_min_word_len 的值设置为 1。
FULLTEXT需要空间是空间,而不是“字母”。也就是说,“单词”中不能有空格。
我会编写应用程序代码来忽略“短”字(例如“g”)并以
WHERE MATCH(alternate_name, product_desc, keywords)
AGAINST ('+moto +plus'; IN BOOLEAN MODE)
AND ( alternate_name LIKE '%moto g plus%'
OR product_desc LIKE '%moto g plus%'
OR keywords LIKE '%moto g plus%' )
Run Code Online (Sandbox Code Playgroud)
这将是有效的,因为MATCH首先发生,从而显着限制了行数。然后成本高昂OR并且LIKE不必接触许多行。
(我在本次讨论中省略了“手机”。)