В упругом поиске я использую 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');
Функция для естественной сортировки в многомерном массиве:
function nat_multi_sort ($a, $b) {
return strnatcmp($a['line_1'], $b['line_1']);
}
usort($array, 'nat_multi_sort');
Это должно быть решено с помощью скриптовый.
Если первым токеном в адресе является число, используйте только этот номер для сортировки.
Или передайте положительную бесконечность в качестве значения сортировки.
{
"sort": [
{
"_script": {
"script": "try { Integer.parseInt(doc['address'].value); } catch(Exception e){ return Integer.MAX_VALUE;}",
"type": "number",
"order": "asc",
"lang": "groovy"}
}
]
}
Таким образом, адрес, который не начинается с числа, будет отправлен до конца. И те, с номером будут отсортированы по числовому значению