[英]fulltext index - mysql
我们有一个全文索引设置用于网站上的搜索(mysql / php)。
搜索大部分时间都很有效,但我们一直在遇到这些奇怪的错误。
例如:
1)这个作品:“中国炒锅”
2)这不是:“First Wok”
我的假设是第二个不起作用,因为:a)它踢出'wok',因为它只有3个字母b)它踢出'first'因为它在一些单词列表中被忽略。
我的假设是否正确?
如果是这样,我将如何调整两者的内容:a)以某种方式将“第一个”列入白名单,以便在搜索中使用b)以某种方式将“wok”列入白名单,尽管它只是一个3个字母的单词
一如既往地谢谢!
我的假设是否正确?
你是两个都是正确的。 如自然语言全文搜索中所述 :
在全文搜索中会忽略某些单词:
任何太短的单词都会被忽略。 通过全文搜索找到的默认最小单词长度为四个字符。
禁用词列表中的单词将被忽略。 禁用词是诸如“the”或“some”之类的词,它是如此常见以至于它被认为具有零语义值。 有一个内置的禁用词列表,但它可以被用户定义的列表覆盖。
默认的停用词列表在第12.9.4节“全文停用词”中给出。 可以按第12.9.6节“微调MySQL全文搜索”中所述更改默认的最小字长和停用词列表。
正如微调MySQL全文搜索中所述 :
要索引的单词的最小和最大长度由
ft_min_word_len
和ft_max_word_len
系统变量定义。 (请参见第5.1.4节“服务器系统变量” 。)默认最小值为四个字符; 默认最大值取决于版本。 如果更改任一值,则必须重建FULLTEXT
索引。 例如,如果要搜索三个字符的单词,可以通过将以ft_min_word_len
放在选项文件中来设置ft_min_word_len
变量:\n 的[mysqld]\n 的ft_min_word_len = 3\n然后重新启动服务器并重建您的
FULLTEXT
索引。 请特别注意此列表后面的说明中有关myisamchk的注释。要覆盖默认的禁用词列表,请设置
ft_stopword_file
系统变量。 (请参见第5.1.4节“服务器系统变量” 。)变量值应该是包含禁用词列表的文件的路径名,或者是用于禁用禁用词过滤的空字符串。 除非给出绝对路径名以指定其他目录,否则服务器将在数据目录中查找该文件。 更改此变量的值或停用词文件的内容后,重新启动服务器并重建FULLTEXT
索引。禁用词列表是自由格式的。 也就是说,您可以使用任何非字母数字字符(如换行符,空格或逗号)来分隔停用词。 例外是下划线字符(“
_
”)和单个撇号(“'
”),它们被视为单词的一部分。 禁用词列表的字符集是服务器的默认字符集; 请参见第10.1.3.1节“ 服务器字符集和排序规则 ”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.