Поисковый движок?

Недавно мне понадобился поиск с опечатками и тп. Поставил 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. Но в этом случае перестает работать поиск с опечатками. В общем как я только не эксперементировал, мне не удалось настроить такую простую вещь. Документация у эластика ужасная!
Подскажите, как с этим у других движков, типа сфинкса или солр? Проще в плане настройки.
Каким движком пользуетесь вы?
  • Вопрос задан
  • 1993 просмотра
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы