Упругий поиск сортировки номеров в строке

В упругом поиске я использую 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');

0

Решение

Функция для естественной сортировки в многомерном массиве:

function nat_multi_sort ($a, $b) {
return strnatcmp($a['line_1'], $b['line_1']);
}

usort($array, 'nat_multi_sort');
1

Другие решения

Это должно быть решено с помощью скриптовый.
Если первым токеном в адресе является число, используйте только этот номер для сортировки.
Или передайте положительную бесконечность в качестве значения сортировки.

{
"sort": [
{
"_script": {
"script": "try { Integer.parseInt(doc['address'].value); } catch(Exception e){ return Integer.MAX_VALUE;}",
"type": "number",
"order": "asc",
"lang": "groovy"}
}
]
}

Таким образом, адрес, который не начинается с числа, будет отправлен до конца. И те, с номером будут отсортированы по числовому значению

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector