2015-07-29 3 views
0

Я в данный момент отправляет следующий запрос ElasticSearch:Elasticsearch повышение, но только одно вхождение термина в поле

{ 
    "size": 100, 
    "query": { 
     "function_score": { 
      "query": { 
       "simple_query_string": { 
        "query": "term1", 
        "fields": ["field1^10", "field2^5"] 
       } 
      }] 
     } 
    } 
} 

Теперь представьте, у меня есть два документа.

  • Document1 содержит одно вхождение "TERM1" на field1
  • документ2 содержит три вхождения "TERM1" на FIELD2

Что я получаю: Эластичные возвращается документ2 выше Document1

Что я хочу: Документ1 выше Документ2.

Для этого Elastic не должен умножать количество вхождений «term1» только в том случае, если оно «появляется». Что мне делать по моему запросу?

ответ

1

Кажется, есть два варианта опций, чтобы заставить Эластик не давать больше веса в зависимости от количества вхождений термина.

Кулак одна карта поля, чтобы отключить термин частоты (TF): https://www.elastic.co/guide/en/elasticsearch/guide/current/scoring-theory.html#tfidf

Второй заключается в использовании постоянного Score запрос: https://www.elastic.co/guide/en/elasticsearch/guide/current/ignoring-tfidf.html

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