solr facets vs mysql关系模式

Ke.*_*Ke. 4 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?

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

干杯柯

Mat*_*ttW 5

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

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

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

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

    HTH,马特