2013-08-29 11 views
5

Mam następujące zapytanie:Zwiększenie wyszukiwania w konkretnych dziedzinach i sortowania według rangi

{ 
    "sort": [ 
     {"actual_rank" : "desc"} 
    ], 
    "query": { 
     "multi_match" : { 
      "query" : term, 
      "fields" : [ "title^3" , "category^5" , "entities.name^5"] 
     } 
    } 
} 

Problem z tego zapytania jest to, że sortowanie według rangi sprawia określonych pól pobudzanie całkiem nieistotne (a najlepiej w rankingu pozycję, w której termin nie pojawia się w określonych polach będzie wyżej umieszczony niż najgorszy w rankingu element, w którym pojawia się termin).

Chciałbym zmniejszyć znaczenie sortowania, aby uzyskać lepsze wyniki.

Odpowiedz

6

W rzeczywistości, zgodnie z dokumentacją sortowania (http://www.elasticsearch.org/guide/reference/api/search/sort/), należy włączyć ustawienie track_scores, jeśli chcesz, aby wyniki były obliczane w ogóle podczas sortowania na polu.

Jednak zgaduję, że chcesz wykonać niestandardową punktację (patrz http://www.elasticsearch.org/guide/reference/query-dsl/custom-score-query/ i/lub http://www.elasticsearch.org/guide/reference/query-dsl/custom-filters-score-query/). Przykłady są znakomite w tym poście na blogu (http://jontai.me/blog/2013/01/advanced-scoring-in-elasticsearch/)

Chciałbym opublikować kod, ale myślę, że blog stanowi dokładny widok.

Powiązane problemy