2015-02-11 2 views
0

У меня есть Elasticsearch::Model на ActiveRecord::Base модели, которая выглядит как этотОценки по ближайшему матчу в Elasticsearch

class ArtistGroup < ActiveRecord::Base 
    include Elasticsearch::Model 
    include Elasticsearch::Model::Callbacks 

    FT_REDIS_KEY = "agft" 
    has_many :artists 

    settings index: { number_of_shards: 5 } do 
    mappings dynamic: 'false' do 
     indexes :normalized_name, analyzer: 'english' 
     indexes :name, analyzer: 'english' 
    end 
    end 

    def as_indexed_json(options={}) 
    as_json(only: ['normalized_name', 'id', 'name']) 
    end 
.... 

Когда я поиск по .search('haim') Я хочу, чтобы этот документ с названием: «Хаим», который будет возвращен первым перед другими, как «Даниэль Хаим из Хаима», как я могу контролировать ES-запрос, чтобы забить ближайший матч?

ответ

0

Elasticsearch возвращает по умолчанию результаты, отсортированные по релевантности (в зависимости от каждого документа).

Способ расчета этой оценки основан на наборе базовых правил в сочетании с некоторыми специфическими для конкретного запроса правилами.

Стандартный алгоритм подобия используется в Elasticsearch называется термином частоты/обратной частоты документа или TF/IDF, который принимает во внимание следующие факторы:

  • Term частоты: Как часто появляются в срок поле? Чем больше часто, тем более актуальным. Поле, содержащее пять упоминаний о том же значении , более вероятно, будет иметь значение, чем поле, содержащее только одно из упоминаний .
  • Частота обратного отсчета: Как часто происходит подмена терминов ? Чаще всего это менее актуально. Условия, которые появляются во многих документах, имеют более низкий вес, чем более-необычные .
  • Нормы длины поля: Как долго поле? Чем дольше это, тем меньше вероятность, что слова в поле будут актуальны. Термин , появляющийся в коротком заголовке, несет больше веса, чем тот же термин, который появляется в длинном поле содержимого.

Отдельные запросы могут сочетать баллы TF/IDF с другими факторами, такими как термин близость в фразовых запросах или термин сходство в нечетких запросах.

Полное описание релевантности см. Здесь: http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/sorting.html

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