2013-09-27 2 views
3

Мой вопрос: как мы можем дать динамическое значение повышения для каждой записи поиска?Увеличьте запись по точке, присвоенной этой записи в Elastic Search

В моем случае каждая запись в базе данных имеет назначенное ей значение точки, и я должен назначить эту точку в качестве значения повышения в своем поиске.

Спасибо и наилучшими пожеланиями

+0

Пожалуйста, обновите свой вопрос, нажав кнопку «Edit» ... Пожалуйста, не используйте комментарий коробки. – jamesc

+0

Вы, вероятно, также получите несколько лучших ответов, если пометить вопрос «шинами» и «рельсами», так как это похоже на то, что вы используете. – jamesc

ответ

3

Я решил эту проблему, используя следующие:

custom_score :script => "_score+doc['increase_relevance_points'].value" do 
    boolean do 
    should { match :increase_relevance_text, term} 
    end 
end 
0

Вы можете индексировать значение точки из записи базы данных в ElasticSearch как целое. Как только он там, у вас есть много вариантов, используя custom_score или script based sorting.

Если вы хотите увеличить каждый результат на фактор point_value то запрос может выглядеть примерно так:

"query": { 
    "custom_score" : { 
     "query" : { 
      .... 
     }, 
     "script" : "doc['point_value'].value * _score" 
    } 
} 

Отъезд custom score query docs для полной информации.

+0

я попытался это, но это не подходит моему требование отображения делать индексов: attR1 индексов: attr2 индексов: increase_relevance_text индексов: decrease_relevance_text конца я должен увеличить импульс этой записи, если условие поиска совпадения текста в увеличении_relevance_text и для уменьшения наоборот. –

+0

Мне срочно нужно какое-то решение. Пожалуйста, помогите мне. –

+0

Я пытался это решение custom_score сделать запрос сделать должен {матч: increase_relevance_text, термин} конец сценарий '_SCORE + doc.increase_relevance_points' конец Получение ошибки неопределенный метод 'запроса» для # Пожалуйста, jamesc помогите мне. –

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