Я использую Elasticsearch + Searchkick в своем приложении Rails для индексации статей. Когда я ищу по неполным словам, это не работает. Например:
Article.search('feature compatibility').pluck(:name)
# => ["Feature compatibility by mobile device"]
Article.search('feature compatibil').pluck(:name)
# => []
В моей модели используются настройки Searchkick по умолчанию.
searchkick text_start: [:name, :body]
, а затем переиндексировал. Поискfeature compatibil
по-прежнему не дает результатов. Поискfeature compatibility
подходит. - person Diego   schedule 17.04.2017feature compatibil
(то есть части слова) очень похож на автозаполнение. Вместо этого вы можете попробоватьmatch_phrase_prefix
, т.е.Article.search body: {match_phrase_prefix: {name: "feature compatibil"}}
- person Val   schedule 17.04.2017failed to parse search source. unknown search element [match_phrase_prefix]
. Необходимость изменить поведение по умолчанию звучит неправильно для меня. Если я ищуfeature
, появляется статья, если я набираюfeature co
, эта статья больше не соответствует. Это звучит очень нелогично. Я не могу быть единственным, кто должен изменить это поведение. Или я что-то не так делаю. Необработанные запросы Elasticsearch, используемые для обработки этих случаев, если я не ошибаюсь. - person Diego   schedule 17.04.2017co
, потому чтоfeature compatibility
по умолчанию индексируется вfeature
иcompatibility
, то есть вы вообще не индексируете ngrams.match_phrase_prefix
— единственный запрос, который даст вам то, что вы хотите, не вдаваясь в ngram-обработку ваших данных. - person Val   schedule 17.04.2017Article.search('featu')
работает? - person Diego   schedule 18.04.2017