2015-05-20 13 views
6

Mam dokument ma tablicę jakelastyczna wyszukiwarka tablica zdobyć

doc1

{ 
"item_type":"bag", 
"color":["red","blue","green","orange"] 
} 

zmienna doc2

{ 
"item_type":"shirt", 
"color":["red"] 
} 

kiedy zrobić multi_match wyszukiwania jak

{ "query": { "multi_match": { "query": "red bag", "type": "cross_fields", "fields": ["item_type","color"] } } }

Doc2 ma znacznie wyższą ocenę, rozumiem, że kolor ma mniejszą liczbę przedmiotów, a wynik jest gorszy, jeśli mam więcej kolorów w doc1.

Czy istnieje sposób, w jaki mogę poprosić Elasticsearch, aby uzyskał taki sam wynik dla pola tablicowego, bez względu na to, ile elementów tam jest?

+0

Czy chcesz użyć 'multi_match' bez względu na co? –

+0

Czy uzyskasz lepsze wyniki, jeśli dodasz '" use_dis_max ": false' do swojej' multi_match'? –

+0

use_dis_max: false nie pomaga –

Odpowiedz

4

Jeśli nie chcesz uwzględnić długości pola (fieldNorm) podczas oceniania, możesz wyłączyć norms dla pola w odwzorowaniu.

Na przykład odwzorowania dla powyższego przykładu będzie

{ 
    "properties": { 
     "item_type": { 
     "type": "string" 
     }, 
     "color": { 
     "type": "string", 
     "norms": { 
      "enabled": false 
     } 
     } 
    } 
} 

to article z elasticsearch ostatecznego prowadnicy daje dobry wgląd w polu długości normami.

+0

Dzięki Keety, uratowałeś mój dzień! –