Symfony2+聚合的弹性搜索[复杂]



Facet Filter Demo

我正在使用FOSLastica创建一个带有Elasticsearch+Symfony2的搜索页面。我已经设置好了存储库和模型转换以及分页。

我有几个聚合的地理位置搜索,它们在之后

距离范围

  • <5英里
  • 25英里
  • 50英里
  • 100英里

两点之间的持续时间

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

类别

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

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

问题

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

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

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

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

一些选项:

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

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


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

最新更新