数据库
首页 > 数据库> > 用一个字符长的单词搜索(MySQL)

用一个字符长的单词搜索(MySQL)

作者:互联网

我的MySQL数据库中有一个表格Books,其标题列(varchar(255))和Edition(varchar(20))列.这些的示例值是“微观经济学简介”和“ 4”.

我想让用户根据书名和版本搜索“图书”.因此,例如,他们可以输入“微观经济学4”,它将得到正确的结果.我的问题是我应该如何在数据库方面进行设置.

有人告诉我,全文搜索通常是执行此类操作的好方法.但是,由于该版本有时只是一个字符(“ 4”),因此必须设置全文搜索以查看单个字符(ft_min_word_len = 1)..我听说这效率很低.

那么,我应该如何设置该数据库的搜索?

更新:我知道可以在这里使用CONCAT / LIKE.我的问题是它是否会太慢.我的图书数据库中有成千上万本图书,很多用户都在搜索它.

解决方法:

对于您只对标题和版本感兴趣的应用程序,我怀疑将FULLTEXT索引与MATCH / AGAINST一起使用并将ft_min_word_len减小为1不会对性能产生太大影响(如果您的数据比较冗长或用户撰写的内容,那么我可能会犹豫).

最简单的检查方法是更改​​值,修复表以说明新的ft_min_word_len并重建索引,然后执行一些简单的基准测试.

话虽如此,对于您的应用程序,我可能会考虑使用Sphinx.它肯定会更快一些,并且您的内容是相对静态的,因此重新索引(Sphinx的主要缺点IMO)之间的延迟不是问题.另外,通过谨慎使用wordformsexceptions,您可以将诸如4 / four / fourth / IV之类的所有内容映射到同一令牌,以改善搜索.

标签:search,full-text-search,sql,mysql
来源: https://codeday.me/bug/20191209/2097574.html