我想在字段上进行全文搜索以匹配字符串的特定部分。考虑一个长字符串保存数组值如201 ::: 1 ### 193 ::: 5 ### 193 ::: 6 ### 202 ::: 6。 ###分隔数组元素和:::分开键=> val。现在我对匹配的理解是,它可以匹配布尔模式中的字符串部分。但是当我做mysql全文MATCH,反对
`SELECT
a.settings
, MATCH(a.settings) AGAINST('201:::1') as relevance
, b.maxrelevance
, (MATCH(a.settings) AGAINST('201:::1'))/b.maxrelevance*100 as relevanceperc
FROM
users_profile a
, (SELECT MAX(MATCH(settings) AGAINST('201:::1')) as maxrelevance FROM users_profile LIMIT 1) b
WHERE
MATCH(a.settings) AGAINST('201:::1')
ORDER BY
relevance DESC;`
表例如
CREATE TABLE users_profile
(
id
INT(11)默认为NULL线的东西,
profile
文本,
views
INT(11)默认为NULL ,
friends_list
text,
settings
text,
points
INT(11)默认NULL,
KEY id
(id
),
全文键settings
(settings
)
)ENGINE = MyISAM的默认字符集= UTF8;
我得到零结果。任何想法都欢迎。
显示表例子,并标出你whant被选定的字段,请。 – 2011-04-06 06:30:17
我已更新表结构。只有字段设置将被搜索 – mbouclas 2011-04-06 06:44:14
我认为“:”是为布尔搜索保留的。看看:http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_ft_boolean_syntax并尝试修改此设置。这可能有帮助。也可以看看本页面中以“ft_”开头的所有其他设置。 – eisberg 2011-04-06 06:47:09