当前位置:  开发笔记 > 后端 > 正文

Mysql全文索引限制?

如何解决《Mysql全文索引限制?》经验,为你挑选了1个好方法。

有什么限制或陷阱或反模式或陷阱?

它看起来很有吸引力,显然你可以创建一个几乎没有工作的搜索引擎.但它不能没有它的问题......

你有什么经历?



1> bobince..:

它不能没有它的问题......

当然不是!

任何纯粹由被阻止的单词组成的搜索词都将无声地失败.由于最小/最大长度限制和/或停用词文件,可以阻止单词.

我发现默认的停用词文件过于激进,它阻止了许多有效的搜索.对于人们可能想要搜索的首字母缩略词,默认的最小长度4也经常被踢.我将ft_min_word_len缩减为3并完全删除了停止列表(ft_stopword_file ='').Doc:http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

您还可以检查搜索查询以查看它是否仅包含<4个字母的单词,并在这种情况下回退到LIKE搜索.没有这么简单的方法可以在应用程序级别绕过停止列表.

选择"单词字符"可能无法满足您的需求,而且更改起来也很棘手.例如,搜索"Terry"将与"Terry"不匹配.一般来说,不支持任何类型的干酪,因此"饼干"也不会与"饼干"相匹配.

最后,正如cg所提到的,没有对InnoDB的支持.在这个时代,您不希望将所有数据放在MyISAM表中.

如果您有备用存储空间,您可以做的是将数据的主要规范版本放在InnoDB表中,然后创建一个单独的MyISAM表,其中包含freetext内容的副本,纯粹用作searchbait.您必须在更改时更新两个表,但如果MyISAM表失去完整性,那么至少您将无法搜索相关行,而不是弄乱真实的实时数据并获得应用程序错误.

然后,如果你有自己的周期,你可以在searchbait和查询单词上实现自己的文本处理,以解决上述一些限制.例如,您可以转义您想要成为单词字符的字符,删除您不想成为单词字符的字符,以及执行简单的手动英语词干.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有