用一个字符长的单词搜索(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之类的所有内容映射到同一令牌,以改善搜索.

猜你在找的MySQL相关文章