2015-02-17 2 views
0

Я использую KendoGrid, а источник данных - из эластичного поиска. Когда я сортирую по названию, эластичный поиск дает мне несколько неожиданных результатов. После анализа я заметил, что если я отсортируюсь по любому порядку по восходящему/нисходящему, эластичный поиск разбивает строку на слова, и в этих словах он ищет слово, начинающееся с более низкого/более высокого значения соответственно. Например.Упрощенная сортировка с помощью токенизатора

Again Test for Hard bounce check 
Campaign Sender Test 
Test SMTP 2 
Test SMTP 1 
Test Campaign34 
Test Campaign345 
Campaign Test mergervars 
Link test 
Failed Test 

Первый пункт в приведенном выше списке «Снова Тест на жесткие проверки рикошета» был разделен на 5 слов и так «Тест» начинается с T он показывает первый в списке.

Но я не хочу сортировать этот путь. Я хочу сортировать с начала строки. Как мне это сделать.

Я предполагаю, что я должен обрабатывать его через токенизатор, но не уверен, как это сделать. Пожалуйста помоги.

ответ

1

Сортировка происходит при обратном инверсном индексе, лучше известна как кеш данных fielddata. Данные, поступающие сюда, после токенизации. Если вы хотите presrve функцию поиска и сортировки на этом поле тоже, то я настоятельно рекомендуется использовать multi fields

"title": { 
    "type": "string", 
    "fields": { 
     "sort": { "type": "string", "index": "not_analyzed" } 
    } 
} 

Теперь у нас есть два поля для внутренних заголовка поля. Поле заголовка и название. Сорт. Используйте поле title.sort, поскольку оно имеет точную строку.

Смежные вопросы