Недавно мне понадобился поиск с опечатками и тп. Поставил elasticsearch. Из коробки поиск работает хорошо, но у меня никак не получилось отсортировать результат по алфавиту. Например, есть словосочетания:
System of a down
My own system
System 27
Presystem
Systemode
Мне нужно, чтобы пользователь, написав "system" получил в первую очередь строки, которые начинаются с этого слова. Эластиксёрч же по умолчанию индексирует каждое слово в словосочетании отдельно и выдает результат не так как мне нужно. Я пробовал менять токенайзер и тп. Пробовал примерно так:
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"analyzer_startswith": {
"tokenizer": "keyword",
"filter": "lowercase"
}
}
}
}
},
"mappings": {
"test_index": {
"properties": {
"title": {
"search_analyzer": "analyzer_startswith",
"index_analyzer": "analyzer_startswith",
"type": "string"
}
}
}
}
}
И искать с помощью match_phrase_prefix. Но в этом случае перестает работать поиск с опечатками. В общем как я только не эксперементировал, мне не удалось настроить такую простую вещь. Документация у эластика ужасная!
Подскажите, как с этим у других движков, типа сфинкса или солр? Проще в плане настройки.
Каким движком пользуетесь вы?