【问题标题】:Faceted search: ElasticSearch/Solr or a simple database query?分面搜索:ElasticSearch/Solr 还是简单的数据库查询?
【发布时间】:2012-08-04 13:57:27
【问题描述】:

请原谅这个来自搜索新手的超级基本问题。

我想实现一个使用分面搜索的网站。例如,它是一个带有酒店数据库的网站,我希望允许用户搜索价格范围内的酒店,有游泳池,三星级或四星级。

显然,我可以通过简单的数据库查询将结果返回给用户。

我应该使用 ElasticSearch 或 Solr 来实现这一点,而不是使用数据库查询吗?如果有,为什么?

【问题讨论】:

  • 您最终为此使用了什么解决方案?我正在尝试构建一个类似的网络应用程序。

标签: database search solr elasticsearch


【解决方案1】:

是的,您应该使用 ES 或 Solr。原因:主要是性能和轻松更改(想想配置)“刻面类型”的能力。

刻面是一项不小的壮举,虽然您可以使用 RDBMS 来完成,但要快速完成需要认真思考。如果您可以使用 Solr / ES (+ Lucene) 团队为优化它所花费的大量时间,为什么还要自己做呢。

至于我提到的“刻面类型”:

  1. 也许您想进行分层刻面。选择价格类别 > 显示较小的价格类别。如何分桶:固定范围、均匀分布等。 Solr / ES 从配置中提供这些选项。
  2. 也许您使用带有最小/最大句柄的滑块来实现价格分面?滑动时是否要显示酒店的 nr(直方图/Solr / ES 中的 facetstats)
  3. 虽然您已经了解价格,但您可能仍想知道价格滑块的最小值和最大值,就好像您没有按价格进行过滤一样。如果您希望能够按比例绘制滑块手柄,则需要这样做。 (作为考虑从 Solr 切换到 ES 的一部分,请参阅我关于 SO 的问题:Elasticsearch: excluding filters while faceting possible? (like in Solr)
  4. 在星星上刻面?如果用户选择该星(再次直方图/统计数据),也许您想显示每个星面的最佳价格

说真的,甚至不要考虑使用 RDBMS 进行上述操作。你会发疯的。

希望对您有所帮助,是的,我熟悉该领域 :)

其他问题,尽管问。

【讨论】:

  • 谢谢!我真正想做的是有一个 Ajax 前端,(比如说)用户可以滑动滑块,一切都会立即更新。我正在考虑构建一个 JavaScript 前端并通过 JSON API 返回数据库结果:但是 ES/Solr 可以公开 JSON API 吗?或者更好的是,他们是否提供开箱即用的 Ajax 前端?请原谅我问这些简单的问题。
  • 好吧,我改用 ES 的原因之一:它原生地使用 JSON 语言:).. 是的,你的建议非常合理(我们这样做),尽管我不知道有任何开箱即用的 ajax 前端
  • 您可能想要做的是连接一个客户端 MVC 框架,例如骨干网(或我使用的 spin.js).. 请参阅这篇文章(加上我的答案)了解我的想法以这种方式设置搜索页面的良好过程 > stackoverflow.com/questions/7370056/… 。顺便说一句,这不涉及后端。
  • 太棒了——这就是我要做的(我个人喜欢 Angular.js)。感谢您提供非常有用的答案!
  • 对于 solr ajax,请参阅 github.com/evolvingweb/ajax-solr(从未尝试过,但演示看起来很有趣)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多