search_modifier可以是以下几种模式之一,主要关注前2种:
● IN BOOLEAN MODE:精确匹配,在布尔模式下进行匹配。布尔模式允许使用布尔运算符(AND、OR、NOT)和扩展操作符(+、-、*)。使用布尔模式可以进行更复杂的搜索逻辑和条件匹配。
● IN NATURAL LANGUAGE MODE:默认模式,在自然语言模式下进行匹配。自然语言模式是一种基于自然语言的搜索模式,它会根据单词的重要性和相关性进行匹配,并按照相关性进行结果排序。
● IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION:在自然语言模式下进行匹配,并使用查询扩展。查询扩展可以扩大搜索结果的范围,包括与原始查询相关的其他词汇。
● WITH QUERY EXPANSION:进行查询扩展,扩大搜索结果的范围,但不指定具体的匹配模式。
语法规则说明
SHOW VARIABLES LIKE ‘ft%’;
ft_boolean_syntax:全文索引分词关键字,不能更改,为内置变量
+ 必须包含该词
- 必须不包含该词
> 提高该词的相关性,查询的结果靠前
< 降低该词的相关性,查询的结果靠后
(*)星号 通配符,只能接在词后面
ft_max_word_len:最大分词长度,一般情况下不需要更改
ft_min_word_len:最小分词长度,一般修改为1
ft_query_expansion_limit:不明觉厉的一个参数,基本上不需要设置
ft_stopword_file:全文停止词
使用例子
- 等价于where item_desc like ‘%汤臣倍健%’
SELECT
*
FROM
plan_goods
WHERE
MATCH(item_desc) AGAINST(‘汤臣倍健’ IN BOOLEAN MODE); - 包含汤臣倍健并且不包含牛初乳
SELECT
*
FROM
plan_goods
WHERE
MATCH(item_desc) AGAINST(‘+汤臣倍健 -牛初乳’ IN BOOLEAN MODE);