2013-07-18 9 views
10

Ho tre indici di tipo alimentare "italiano", "spagnolo", "americano". Quando l'utente cerca "Cheese", i documenti da "Italian" sembrano venire in cima. È possibile "aumentare" i risultati se dovessi dare la preferenza a dire "spagnolo"? (Dovrei comunque ottenere risultati per l'italiano, ma sulla base di alcuni valori numerici di boost per il tipo di indice "spagnolo", l'ordinamento dei documenti restituiti nei risultati dà la preferenza all'indice "spagnolo". È possibile in input dell'utente lucene e/o query ES? Se sì, come?Come aumentare la ricerca in base al tipo di indice in elasticsearch o lucene?

+1

Forse stai cercando index-boost? https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-index-boost.html – Sid

risposta

5

aggiungere una query termine con una spinta sia per il campo _type o _index (o entrambi).

+0

Attualmente utilizzando una query stringa, è possibile utilizzarlo con una query di termini? – Rolando

+0

combinali con un bool –

+0

Non trovi alcun modo per aumentare _type nel documento ufficiale, potresti darmi un campione o un link? http://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-term-query.html – navins

0

per query tempo aumentando, le query (es. query string) in generale avere un attributo boost che è possibile impostare. In alternativa, è possibile racchiudere query in un custom boost factor. Probabilmente preferirei il primo, di solito.

4

Utilizzare un script_score come parte della query punteggio funzione di:

function_score: { 
    script_score: { 
    script: "doc['_type'].value == '<your _type>' ? _score * <boost_factor> : _score" 
    } 
} 
+0

Ho usato "script": "doc ['_ tipo']. valore == '35 '? _score * 2: _score "', risulta essere 'Query Failed [Impossibile eseguire la query principale]]; nested: GroovyScriptExecutionException [MissingPropertyException [Nessuna proprietà di questo tipo: _type per la classe: Script4]] ' – navins

3

Se l'interrogazione di diversi indici in una sola volta, è possibile specificare gli indici aumentare al livello più alto di oggetto passato Search API:

curl -XGET localhost:9200/italian,spanish,american/_search -d ' 
{ 
    "query":{"term":{"food_type":"cheese"}}, 
    "indices_boost" : { 
     "ilalian" : 1.4, 
     "spanish" : 1.3, 
     "american" : 1.1 
    } 
}' 

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-index-boost.html#search-request-index-boost

+0

Alexey, richiede ES 1.7? –

+0

@Alexey Tigarev Come posso ottenere questo utilizzando il client java? – Thiago

+0

con o senza questo non sembra cambiare il punteggio del risultato per me – Jeffrey04

Problemi correlati