solr facets vs mysql关系模式

时间:2010-03-04 18:46:35

标签: mysql solr

我很想知道在solr / mysql / app设置中查询solr的最佳/最快(最有效)方法是什么。我有一个mysql数据库,在关系模式中有一个大的主表和几个较小的表。我还在构建一个使用层次结构的应用程序,并根据相关表格中的数据构建菜单。

我开始只在mysql中执行此操作,但很快发现(使用gigs of data),当使用与主表等的连接时(即使使用mysql索引),mysql在计算此相关数据的计数时会非常慢。目前我采用的方法是使用solr索引我的主表,并将较小的相关表保存在mysql中。对于每个菜单项,我将在运行时查询solr的计数,感觉它会很慢..

更快/更好:

1。)将相关表保存在mysql中,同时为相关表中的每一行设置构面。当我查询维护时,以某种方式将它们链接在一起?这听起来像是最快的选择,但在我的应用程序中可能很棘手(必须匹配2个不同的数组)。

2)将相关表保存在mysql中,并在运行时为每个相关项调用/计数主索引表中的数据。例如对于品牌菜单,我需要计算每个品牌的数量,要求我将每个菜单项作为查询发送到solr(以获取计数)。我意识到每个查询都很快,但可能有几百或几千个品牌。

3)只需将所有数据放入solr并使用facet? - 但是如何识别每个方面并确定每个方面的mysql表格中的相关信息?相关mysql表中的每个条目都有标题,描述,格式化url,元数据,相关信息是否也应存储在solr中?在不同的指数?在这种情况下,我应该完全摆脱mysql吗?

任何有关最佳(练习)选项的想法都会受到高度赞赏,或者我所未想到的任何建议都会很棒。

Cheers Ke

1 个答案:

答案 0 :(得分:5)

Solr是为搜索而构建的 - 它是针对方面等进行优化的,使用它自己的查询语言和缓存机制。如果您能够编写一些能够在搜索查询/结果的性能方面超过Solr的代码(基于MySQL),那将会让我感到非常惊讶。

看看Solr如何为她的数据编制索引(或者实际上你需要提供什么来为它准确索引。有很好的入门文档。也许你最终会得到60%Solr索引和40 %MySQL - 无论哪种方式,从我对您的计划中读到的内容,Solr非常值得探索。

基于网络的应用的常规方法:

  • 1)创建一个与您的数据和Solr的搜索需求相匹配的索引方案
  • 2)创建MySQL数据到Solr的导入(也有工具)
  • 3)创建一个前端应用程序,将用户查询转换为Solr查询
  • 4)将这些查询发送给Solr
  • 5)解析结果并调整查询以创建新方面
  • 6)尽可能缓存

    HTH, 马特