MySQL搜索策略

时间:2011-03-01 16:55:50

标签: mysql search indexing

我正在对我的项目实施搜索,要求:

  • 关键字可以在不同的表格中的两列(标记& 标题)中找到
  • #1搜索标记以获取完全匹配
  • 如果为空,则使用MySQL SOUND LIKE功能2#搜索标记
  • 如果为空,则使用LIKE ='%word%'为每个单词搜索标题 3#
    • 交叉标题结果

不知道你是否明白了。希望如此。
现在问题。我在一本书中读到了使用LIKE查询和在求助时使用%不会使用索引加速。

如果确实如此,我的公式会变慢,而标记标题会增加。

你会在表现方面做些什么?

谢谢,

3 个答案:

答案 0 :(得分:0)

我认为在任何“线性”类型的搜索公式中,添加像搜索关键字/标签之类的东西最终会导致搜索变得更慢。这不是关系数据库的主要问题吗? (纠正我,如果我错了)

答案 1 :(得分:0)

假设MyISAM表,您可能希望将实现full-text search作为LIKE的替代方案。

答案 2 :(得分:0)

如果您只想坚持使用2个表,并且想要进行模糊文本匹配,请查看MATCH ... AGAINST。它会或多或少地做你想要的。但有一些警告。

  • FULLTEXT索引只能在MyISAM表上实现,而不能在INNODB
  • 上实现
  • 如果您的文字确实遵循标准字词分发,则结果可能不是最佳

如果您愿意超越关系方法,像Solr这样的索引器可能适合您。