繁体   English   中英

全文索引 - mysql

[英]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_lenft_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM