使用MySQL InnoDB进行Django全文搜索

使用MySQL InnoDB进行Django全文搜索,mysql,django,Mysql,Django,如何使用MySQL InnoDB配置Django进行全文搜索。MySQL Myisam引擎支持全文搜索,但我将使用InnoDB。这是使用狮身人面像的最好方法吗?如果您能解释一下您的配置,我将不胜感激。顺便说一句,我想知道它是如何与postgresql一起工作的。上次我准备做这样的事情,我想尝试一下,所以这可能也是您的选择。上次我准备做这样的事情,我想尝试一下,所以这可能也是您的选择。尽管它可以配置为自动与MySQL对话,Sphinx实际上是MyISAM或InnoDB的独立工具。与MyISAM中过

如何使用MySQL InnoDB配置Django进行全文搜索。MySQL Myisam引擎支持全文搜索,但我将使用InnoDB。这是使用狮身人面像的最好方法吗?如果您能解释一下您的配置,我将不胜感激。顺便说一句,我想知道它是如何与postgresql一起工作的。

上次我准备做这样的事情,我想尝试一下,所以这可能也是您的选择。

上次我准备做这样的事情,我想尝试一下,所以这可能也是您的选择。

尽管它可以配置为自动与MySQL对话,Sphinx实际上是MyISAM或InnoDB的独立工具。与MyISAM中过于简单的全文搜索相比,它提供了更好的处理和性能,但其代价当然是同时基于搜索和数据库的条件查询变得困难。您可以使用SphinxSE存储引擎通过MySQL进行查询和连接,但这不如将其保存在数据库引擎中灵活,连接的性能也不会很好

否则,您可以采用MyISAM和InnoDB的混合方法。将所有规范数据放在适当的InnoDB表中,只需使用MyISAM存储全文searchbait。对于正常操作,只需触摸InnoDB内容;只有在进行全文搜索时,才需要加入MyISAM表。然后,您必须确保在事务成功后,从插入InnoDB表中的任何新文本更新MyISAM表

虽然MyISAM中缺乏事务支持有时会导致数据在并发或错误情况下不一致,但这种危险显然也适用于单独的全文存储解决方案,如Sphinx、Lucene等人,这在现实中不是什么大问题,因为只有搜索诱饵变得不一致,而不是你的实际数据。您还可以借此机会以不同的方式处理全文内容,例如通过应用平凡的词干,因为MySQL本身并不实现这一点


PostgreSQL有自己基于@运算符的内置全文内容。它还没有达到Sphinx的速度,但在词干分析、字典、更好地处理相关值等功能方面远远领先于MyISAM全文,并且您仍然可以将其与其他查询条件自由组合。

尽管可以配置为自动与MySQL对话,但Sphinx实际上是MyISAM或InnoDB的一个独立工具。与MyISAM中过于简单的全文搜索相比,它提供了更好的处理和性能,但其代价当然是同时基于搜索和数据库的条件查询变得困难。您可以使用SphinxSE存储引擎通过MySQL进行查询和连接,但这不如将其保存在数据库引擎中灵活,连接的性能也不会很好

否则,您可以采用MyISAM和InnoDB的混合方法。将所有规范数据放在适当的InnoDB表中,只需使用MyISAM存储全文searchbait。对于正常操作,只需触摸InnoDB内容;只有在进行全文搜索时,才需要加入MyISAM表。然后,您必须确保在事务成功后,从插入InnoDB表中的任何新文本更新MyISAM表

虽然MyISAM中缺乏事务支持有时会导致数据在并发或错误情况下不一致,但这种危险显然也适用于单独的全文存储解决方案,如Sphinx、Lucene等人,这在现实中不是什么大问题,因为只有搜索诱饵变得不一致,而不是你的实际数据。您还可以借此机会以不同的方式处理全文内容,例如通过应用平凡的词干,因为MySQL本身并不实现这一点


PostgreSQL有自己基于@运算符的内置全文内容。它还没有达到Sphinx的速度,但在词干分析、字典、更好地处理相关值等功能方面远远领先于MyISAM全文,而且您仍然可以将其与其他查询条件自由组合。

您想看看吗

搜索不一定很难。Haystack允许您编写一次搜索代码,然后选择要在其上运行的搜索引擎。有了一个熟悉的API,任何Djangonaut人都会感到宾至如归,有了一个架构,您可以根据需要交换东西,这就是搜索应该具备的功能


你可以看一看吗

搜索不一定很难。Haystack允许您编写一次搜索代码,然后选择要在其上运行的搜索引擎。有了一个熟悉的API,任何Djangonaut人都会感到宾至如归,有了一个架构,您可以根据需要交换东西,这就是搜索应该具备的功能