2009-12-15 61 views
2

Django的全文搜索你如何用的MySQL的InnoDB全文搜索配置Django的。 MySQL Myisam引擎支持全文搜索,但我将使用InnoDB。这是使用Sphinx的最佳方式吗?如果你解释你的配置,我将不胜感激。 (顺便说一句,我也不知道它是如何与postgresql一起工作的。)与MySQL的InnoDB

回答

4

虽然它也可以被配置为自动与MySQL,狮身人面像确实是一个单独的工具来的MyISAM或InnoDB的。与MyISAM中的简单全文搜索相比,它提供了更好的处理和性能,但是当然,价格是基于搜索和数据库同时查询条件变得困难。您可以使用SphinxSE(存储引擎)来查询并通过MySQL进行连接,但不如将其保存在数据库引擎中,并且连接性能不佳。

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

尽管MyISAM中缺少事务支持,偶尔会使并发或错误条件中的数据不一致(显然也适用于像Sphinx,Lucene等单独全文存储解决方案的危险),但这不是一个大问题因为只有searchbait变得不一致,而不是你的实际数据。您也可以借此机会以不同方式处理您的全文内容,例如通过应用简单的词干,因为MySQL本身并未实现。

PostgreSQL有其自身内置的全文基础上,@@操作的东西。它并不完全符合Sphinx的速度,但在功能上比MyISAM FULLTEXT快很多(例如词干,字典,更好地处理相关性值),并且您仍然可以将其与其他查询条件自由组合。

1

上次我正要做这样的事情我想试试django-sphinx,所以这也可能是您的选择。

2

可能要看看Haystack

搜索不必硬。 Haystack可让您编写一次搜索代码并选择您想要的搜索引擎。有了一个熟悉的API,它可以让任何Djangonaut都能在家中感受到自己的感觉,并且允许您根据需要交换事物的架构,这就是搜索应该如何实现的。