首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql匹配未返回确切结果的查询

问Mysql匹配未返回确切结果的查询
EN

Stack Overflow用户
提问于 2012-11-27 03:16:14
回答 1查看 1.4K关注 0票数 0

我们有以下查询:

代码语言:javascript
复制
SELECT video . * , u.name, u.username, p.avatar
FROM jos_hwdvidsvideos AS video
WHERE video.public_private = 'public'
AND MATCH (
    title, tags, description
)
AGAINST (
    'matthew:13-44-46'
)
AND video.published =1
AND video.approved = "yes"
LIMIT 0 , 30

唯一的问题是,它会返回标题、标记或描述与matthew:13-44-46匹配的结果,但它会返回其中包含matthew的任何内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 03:45:06

如Fine-Tuning MySQL Full-Text Search所述

如果要更改被视为单词字符的字符集,可以使用多种方法进行更改,如以下列表中所述。进行修改后,必须为包含任何FULLTEXT索引的每个表重新构建索引。假设您希望将连字符('-')视为单词字符。使用以下方法之一:

  • 修改MySQL源代码:在storage/myisam/ftdefs.h中,请参见true_word_char()和misc_word_char()宏。将'-'添加到其中一个宏并重新编译MySQL.
  • Modify字符集文件:这不需要重新编译。true_word_char()宏使用“字符类型”表来区分字母和数字与其他字符。。您可以在其中一个字符集XML文件中编辑<ctype><map>数组的内容,以指定'-'是一个“字母”。然后将给定的字符集用于FULLTEXT索引。有关新排序规则数组格式的信息,请参阅为索引列使用的字符集Section 10.3.1, “Character Definition Arrays”.
  • Add a <ctype><map>,并更改列以使用该排序规则。有关添加排序规则的一般信息,请参见Section 10.4, “Adding a Collation to a Character Set”。有关特定于全文索引的示例,请参见Section 12.9.7, “Adding a Collation for Full-Text Indexing”.

或者,您可以执行精确短语搜索IN BOOLEAN MODE

代码语言:javascript
复制
MATCH (title, tags, description) AGAINST ('"matthew:13-44-46"' IN BOOLEAN MODE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13571541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档