gpt4 book ai didi

symfony - 使用 Symfony2 + 聚合进行 Elasticsearch [复杂]

转载 作者:行者123 更新时间:2023-11-29 02:56:58 25 4
gpt4 key购买 nike

Facet Filter Demo

我正在使用 FOSElastica 使用 Elastic search + Symfony2 创建一个搜索页面。我有设置存储库和模型转换和分页非常好。

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

距离范围

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

两点之间的持续时间

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

类别

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

location: geo point (default is set by country)

问题

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

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

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

最佳答案

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

一些选项:

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

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


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

关于symfony - 使用 Symfony2 + 聚合进行 Elasticsearch [复杂],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34326534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com