MySQL InnoDB文本搜索选项

MySQL InnoDB文本搜索选项,mysql,innodb,full-text-search,myisam,Mysql,Innodb,Full Text Search,Myisam,我很清楚我的InnoDB表不支持全文搜索,我想知道在表中搜索文本的替代方法是什么?使用LIKE时性能是否有那么差 我看到很多建议说在MYISAM表中复制一个有问题的InnoDB表,然后对该表运行查询并匹配两者之间的键,我只是不知道这是一个很好的解决方案 我并不反对使用第三方解决方案,但我不是一个超级粉丝。我想进一步探讨MySQL自己能做些什么 想法?如果你想把事情做好,你可能应该从一开始就去做。 它将允许您保持您的表结构 您将获得巨大的性能提升(提前考虑) 你可以访问 Lucene和Sphinx

我很清楚我的InnoDB表不支持全文搜索,我想知道在表中搜索文本的替代方法是什么?使用LIKE时性能是否有那么差

我看到很多建议说在MYISAM表中复制一个有问题的InnoDB表,然后对该表运行查询并匹配两者之间的键,我只是不知道这是一个很好的解决方案

我并不反对使用第三方解决方案,但我不是一个超级粉丝。我想进一步探讨MySQL自己能做些什么


想法?

如果你想把事情做好,你可能应该从一开始就去做。

  • 它将允许您保持您的表结构
  • 您将获得巨大的性能提升(提前考虑)
  • 你可以访问

  • Lucene和Sphinx的伸缩性都非常好(Lucene增强了Wikipedia和Digg/Sphinx增强了Slashdot)

    使用LIKE只能在没有前导%的情况下使用索引。在一个大表上像“%foo%”那样做会对性能造成巨大的影响。如果我是你,我会考虑使用。它能够通过使用您提供的查询从MySQL中提取数据来构建索引。它非常简单,旨在解决您的确切问题


    还有solr,它是lucene的http包装器,但我发现sphinx更简单。

    我和其他人一样,强烈建议使用lucene、sphinx或solr

    然而,如果这些都不存在,并且您的需求很简单,那么我在过去的许多项目中都使用了这些步骤来构建simple搜索功能

    该链接适用于Symfony/PHP,但您可以将这些概念应用于任何语言和应用程序结构,前提是存在可用的词干算法实现。但是,如果您不使用数据访问模式,在更新记录时可以挂接以更新索引,那么它就不那么容易实现


    还有一个缺点是,如果您想要一个索引表,但需要索引多个表,则必须在DAL中模拟引用完整性,或者为要索引的每个不同表添加一个fk列。我不知道你想做什么,所以可能会完全排除这种可能性。

    是的,从关于Lucene的聊天数量来看,这似乎是我最好的选择。谢谢大家!