MySQL中的FullText搜索查询

时间:2011-11-30 11:04:59

标签: mysql search full-text-search

我有以下表结构:

id           bigint(20)
loc          text   
lastmod      datetime
changefreq   varchar(15)
priority     float
isdownloaded tinyint(1)
mainrepoid   bigint(20)

在具有链接的loc上启用了FullText,我想提取具有“name”和“details”字样的所有链接,但不应包含“character”字。我使用以下查询:

SELECT *
FROM links
WHERE MATCH (
   loc
)
AGAINST (
   'name+details-character'
)

但是返回的结果中也有“字符”字样。简而言之,我实际上希望所有来自loc字段的具有此结构的URL / 名称 / id / 详细信息

2 个答案:

答案 0 :(得分:1)

就像Jauzsika在评论中所说,你应该在它之间加上空格。

如果“name”必须,您还应该在其前面添加一个加号。

此外;这些运算符仅在布尔模式下工作。您应该将IN BOOLEAN MODE添加到您的AGAINST语句中,如下所示:

SELECT *
FROM links
WHERE MATCH (
   loc
)
AGAINST (
   '+name +details -character' IN BOOLEAN MODE
)

答案 1 :(得分:0)

此外,您应该检查系统变量ft_max_word_lenft_min_word_len,因为全文搜索可能会跳过某些记录,具体取决于单词的长度。

sys vars