【发布时间】:2015-02-25 06:49:49
【问题描述】:
在弹性搜索中,我使用sort 按地址的第一行排序。但是,如果地址以数字开头,则排序为:
1 Some Street
10 Some Street
12 Some Street
2 Some Street
22 Some Street
24 Some Street
我更愿意将其订购为 1、2、10、12、22、24 等。
在php中对下面的代码进行排序:
$params['sort'] = array('line_1:asc');
【问题讨论】:
-
酷,我一直在寻找弹性搜索的解决方案,但由于我在弹性搜索中只返回一小部分文档,所以在 php 中排序很好。结果在一个多维数组中,所以我将发布代码作为答案。
-
在 PHP 客户端排序不起作用。大多数情况下,您将一次处理一页文档(Say 10),而这种排序仅适用于此。但随后您需要将其应用于整个文档。
-
@VineethMohan “在 PHP 客户端排序”这句话让我觉得你不明白 PHP 是如何工作的……PHP 严格来说是服务器端的。
-
但是它可以从 Elasticsearch“服务器”内部运行吗?假设我们有 10 亿个地址。对于每个搜索请求,可能无法将这整个 10 亿个地址带到 PHP 端,根据上述函数对其进行排序并获取前 10 或 20 个结果......在这种情况下,我们需要从 Elasticsearch 运行它“服务器”端,使用我在答案部分给出的代码。
标签: php elasticsearch lucene