MySQL全文搜索hashtags(包括索引中的#符号)
我非常确定应该有一种方法可以使用MyISAM表中的全文索引来搜索hashtag。默认设置将执行以下操作:MySQL全文搜索hashtags(包括索引中的#符号),mysql,full-text-search,myisam,hashtag,Mysql,Full Text Search,Myisam,Hashtag,我非常确定应该有一种方法可以使用MyISAM表中的全文索引来搜索hashtag。默认设置将执行以下操作: textfield hashtag #hashtag #two #hashtag #hashtag SELECT * FROM table WHERE MATCH(textfield) AGAINST ('#hashtag') > | hashtag | > | #hashtag | > | #two #hash
textfield
hashtag
#hashtag
#two #hashtag #hashtag
SELECT * FROM table WHERE MATCH(textfield) AGAINST ('#hashtag')
> | hashtag |
> | #hashtag |
> | #two #hashtag #hashtag |
而它应该只返回第2行和第3行。看起来hashtag被视为一个单词分隔符,因此在搜索开始之前它被“删除”。我应该怎么做才能对包含#
作为单词一部分的术语进行索引和搜索?如下所述:
可以通过多种方式更改被视为单词字符的字符集,如下表所述。修改后,为包含任何FULLTEXT
索引的每个表重新生成索引。假设要将连字符('-'
)视为单词字符。使用以下方法之一:
- 修改MySQL源代码:在
中,请参阅storage/myisam/ftdefs.h
和true\u word\u char()
宏。将misc\u word\u char()
添加到其中一个宏并重新编译MySQL'-'
- 修改字符集文件:这不需要重新编译。
宏使用“字符类型”表将字母和数字与其他字符区分开来。您可以在一个字符集XML文件中编辑true\u word\u char()
数组的内容,以指定
是一个“字母”。然后将给定的字符集用于'-'
全文索引。有关
数组格式的信息,请参阅 - 为索引列使用的字符集添加新的排序规则,并更改列以使用该排序规则。有关添加排序规则的一般信息,请参阅。有关特定于全文索引的示例,请参见
是否有类似的选项可以将“.”作为innodb全文索引的单词字符?