【问题标题】:Elastic Search with Symfony2 + Aggregation [Complex]使用 Symfony2 + 聚合的弹性搜索 [复杂]
【发布时间】:2016-03-23 10:42:11
【问题描述】:

Facet Filter Demo

我正在使用 FOSElastica 使用 Elastic search + Symfony2 创建一个搜索页面。我已经很好地设置了存储库和模型转换和分页。

我有以下几个聚合的地理位置搜索

距离范围

  • 25 英里
  • 50 英里
  • 100 英里

两点之间的持续时间

  • 30 分钟
  • 1 小时
  • 2 小时
  • 3 小时

类别

  • 汽车
  • 卡车
  • 自行车
  • 悬停板

位置:地理位置(默认由国家设置)

问题

用户将多次聚合点击以过滤其数据以缩小数据范围。跟踪用户活动的聚合的最佳方法是什么?

如何显示控制器和服务方法之间的发送和接收过滤器聚合?

最好按会话跟踪所有内容吗?

【问题讨论】:

  • 请说明您的问题范围。您已经两次使用了track这个词。这是关于记录/计算相对于其他过滤器使用最多的过滤器吗?或者您是否正在尝试确定在给定 Elasticsearch 响应文档的情况下了解过滤器当前选择状态的最佳方式?
  • 在给定 Elasticsearch 响应文档的情况下,了解过滤器当前选择状态的最佳方式是什么? (在刷新页面上向用户显示时)

标签: symfony elasticsearch filtering faceted-search technical-debt


【解决方案1】:

由于默认的 Elasticsearch 响应文档不包含已提交的查询,因此您需要跟踪 MVC 应用程序中的过滤器选择状态,以便正确呈现您的过滤器控件。

一些选项:

  • 过滤器编码为页面上的表单元素(可能隐藏)。表单可以通过 Ajax 发布。
  • 编码到 url 中的过滤器(可添加书签/可共享搜索的好处)
  • 存储在会话中的过滤器(不知道你为什么想要这个,但这是可能的)

提交搜索请求后,调用 Elasticsearch 的控制器现在负责将用户的过滤器选择状态传递给 Elastica(并且与搜索一起返回视图结果)


这种从搜索控制器返回的回显过滤器状态非常有用,尤其是当您需要重绘页面包含搜索过滤器的部分时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2017-12-30
    • 2019-11-08
    • 2021-02-19
    相关资源
    最近更新 更多