我们有一个eMall应用程序,主要基于大约500k行的MySQL主表(详细表存储不可搜索的字段和其他与商店信息相关的表,等等)。
如今,用户可以基于特定的结构化产品数据(例如,品牌、类别、价格、特定商店等)进行搜索。
我们还希望支持与结构化数据相结合的关键字搜索。
我们还希望提高应用程序的性能,并正在考虑我们的基础设施选项,以实现关键字搜索的功能要求和提高速度的技术要求:
Lucene,Sphinx等来索引所有的产品?一个在MySQL前面用作中间缓存层的NoSQL数据库(mongo,沙发等)?一个NOSQL来取代MySQL?
以上几种情况的组合?
在Lucene和Sphinx的案例中,它们在组合结构化标准方面的灵活性如何?或者,我们是否需要首先运行文本搜索,然后在mySQL上使用第二个结构化查询过滤结果?
从你自己的经历中学到的任何提示或教训都将是非常受欢迎的!
提前感谢
发布于 2010-09-23 13:59:20
我一直在使用Sphinx进行与您的需求类似的全文搜索(基于自由文本和结构化属性的搜索),只有几GB的数据& 5M行的MySQL。我对性能和可靠性非常满意(甚至没有一次停机)。
使用Sphinx的优点是它的目标是与MySQL一起使用,因此它非常容易设置。通常你可以在不到一个小时的时间内准备好整个系统,那么为什么不试一试呢?
发布于 2010-09-21 02:38:12
我建议你使用Solr -它支持基于Lucene的关键字搜索。您可以对结构化产品数据使用facet和筛选器。500K项似乎是Solr可以轻松处理的大小。它可以被认为是一个Lucene DB,并且比纯NoSQL更容易使用。您可以在Full Text Search Engine versus DBMS中查看相关的注意事项。
https://stackoverflow.com/questions/3753409
复制相似问题