如何使用MySQL-InnoDB配置Django进行全文搜索。MySQL Myisam引擎支持全文搜索,但我将使用InnoDB。这是使用Sphinx的最佳方式吗?如果您能解释一下您的配置,我将不胜感激。(顺便说一句,我想知道它是如何与postgresql一起工作的。)
发布于 2009-12-15 14:45:09
尽管Sphinx可以配置为自动与MySQL对话,但它实际上是MyISAM或InnoDB的一个独立工具。与MyISAM中简单的全文搜索相比,它提供了更好的处理和性能,但当然,代价是同时基于搜索和数据库的条件查询变得困难。您可以通过MySQL使用SphinxSE (存储引擎)进行查询和连接,但它不如将其保留在数据库引擎中那么灵活,并且连接也不会执行得很好。
否则,您可以采用MyISAM和InnoDB的混合方法。将所有规范数据放入适当的InnoDB表中,只需使用MyISAM存储全文搜索诱饵即可。对于正常操作,您只需触摸InnoDB内容;只有在执行全文搜索时,才需要连接MyISAM表。然后,您必须确保在成功的事务处理之后,根据插入到MyISAM表中的任何新文本更新InnoDB表。
虽然在MyISAM中缺乏事务支持偶尔会使数据在并发或错误条件下不一致(这种危险显然也适用于单独的全文存储解决方案,如Sphinx,Lucene等),但这在现实中并不是什么大问题,因为这只是搜索饵变得不一致,而不是你的实际数据。您还可以利用这个机会以不同的方式处理全文内容,例如通过应用简单的词干,因为MySQL本身并不实现这一点。
基于@@
运算符,PostgreSQL有自己的内置全文内容。它没有达到Sphinx的速度,但在功能上远远领先于MyISAM全文(例如。词干分析、字典、更好地处理相关值),并且您仍然可以自由地将其与其他查询条件组合在一起。
发布于 2009-12-15 15:16:18
你想看看Haystack吗?
搜索不一定很难。Haystack让你只需编写一次搜索代码,就可以选择你想要运行它的搜索引擎。有了一个熟悉的API,这应该会让任何Djang仅有的人有宾至如归的感觉,以及一个允许你根据需要交换东西的架构,这就是搜索应该是什么样子。
发布于 2009-12-15 13:12:17
上一次我要做这样的事情时,我想试试django-sphinx,所以这可能也是你的选择。
https://stackoverflow.com/questions/1907205
复制