Utilizzo la ricerca elastica in C# utilizzando il client fortemente tipizzato NEST. Ho un indice contenente iscrizioni:Ricerca elastica utilizzando il potenziamento del campo NEST
[ElasticType(Name = "Entry", IdProperty = "Id")]
public class Entry
{
public string Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Award { get; set; }
public int Year { get; set; }
}
Dove anno è l'anno di entrata, ad esempio 2012, e il Premio è il tipo di premio vinto l'ingresso, che può essere nullo.
Quindi voglio cercare queste voci utilizzando l'aumento per proprietà diverse. Nel seguente codice, voglio che i risultati siano classificati più in alto rispetto al titolo, rispetto a quelli che corrispondono alla descrizione.
private IQueryResponse<Entry> GetMatchedEntries(string searchText)
{
return _elasticClient.Search<Entry>(
body =>
body.Query(q =>
q.QueryString(qs =>
qs.OnFieldsWithBoost(d =>
d.Add(entry => entry.Title, 5.0)
.Add(entry => entry.Description, 2.0))
.Query(searchText))));
}
Mi è stato chiesto di amplificare i risultati da parte di coloro che hanno vinto premi, e anche aumentare le voci più recenti (ad esempio, sulla anno).
Come posso fare? È qualcosa che deve essere fatto come parte del servizio di indicizzazione o come parte della ricerca?
Grazie per questo distacco Martijn - sicuramente più utile la documentazione attuali. –
Va notato che questo funzionerà SOLO con Elasticsearch <1.0. Dovresti utilizzare la query punteggio funzione invece in Elasticsearch> = 1.0. https://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-function-score-query.html. Vedi anche la soluzione a https://www.elastic.co/guide/en/elasticsearch/reference/0.90/query-dsl-function-score-query.html –