Esiste un modo in elasticsearch per aumentare l'importanza della frase esatta che appare nel documento? Ad esempio, se cercassi la frase "sviluppatore web" e se le parole "sviluppatore web" fossero apparse insieme, sarebbero state potenziate di 5 rispetto a "web" e "sviluppatore" che apparivano separatamente in tutto il documento. In tal modo ogni documento che conteneva "sviluppatore web" insieme apparirebbe prima nei risultati.elasticsearch aumenta l'importanza dell'esatta corrispondenza a frase
risposta
È possibile combinare diverse query insieme utilizzando uno bool query e si può anche dare un ulteriore impulso. Supponiamo che tu abbia un regolare match query per entrambi i termini, indipendentemente dalle loro posizioni, e quindi una query a frase con una maggiore spinta.
Qualcosa di simile a quanto segue:
{
"query": {
"bool": {
"should": [
{
"match": {
"field": "web developer"
}
},
{
"match_phrase": {
"field": "web developer",
"boost": 5
}
}
],
"minimum_number_should_match": 1
}
}
}
In alternativa alla risposta s' javanna, si potrebbe fare qualcosa di simile con must
e should
clausole all'interno di una query bool
:
{
"query": {
"bool": {
"must": {
"match": {
"field": "web developer",
"operator": "and"
}
},
"should": {
"match_phrase": {
"field": "web developer"
}
}
}
}
}
testato , ma credo che la clausola must
corrisponda ai risultati che contengono sia "web" e "devel" oper 'e la clausola should
aumenterà il punteggio delle frasi che corrispondono allo' sviluppatore web '.
Sì, questo ha una maggiore rilevanza per un documento con 'web developer' in esso, ma l'OP voleva controllare l'importanza relativa (usando il numero' 5'). Ad esempio, forse in un caso raro, un documento con tonnellate di token 'web' e' developer' che appaiono dappertutto potrebbe battere un documento con un singolo 'sviluppatore web '. Con questa risposta date uguale importanza a entrambe queste domande ([ref] (https://www.elastic.co/guide/en/elasticsearch/guide/corrent/bool-query.html#_score_calculation)). – Garrett
Ho usato sotto la query di esempio nel mio caso che funziona. Porta risultati esatti + sfocati ma quelli esatti sono potenziati!
{ "query": {
"bool": {
"should": [
{
"match": {
"name": "pala"
}
},
{
"fuzzy": {
"name": "pala"
}
}
]
}}}
Penso che il suo comportamento predefinito già con query di ricerca "o" operatore. Filtra prima la frase "sviluppatore web" e poi termini come "web" o "develeper". Sebbene tu possa aumentare la tua query usando le risposte sopra. Correggimi se sbaglio.
Si potrebbe provare a utilizzare il punto di riferimento per eseguire un'esatta corrispondenza esatta sui risultati iniziali. Dai documenti:
"Il Rescoring può aiutare a migliorare la precisione riordinando solo i primi (es. 100 - 500) documenti restituiti dalle fasi query e post_filter, utilizzando un algoritmo secondario (solitamente più costoso), invece di applicare il costoso algoritmo a tutti i documenti nell'indice. "
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-rescore.html
- 1. Ricerca prefisso frase ElasticSearch - Come ottengo la frase abbinata?
- 2. Query prefisso frase Elasticsearch su più campi
- 3. Come abilitare la sfocatura per le query a frase in ElasticSearch
- 4. Come faccio una corrispondenza parziale in Elasticsearch?
- 5. Corrispondenza esatta (non sottostringa) in Elasticsearch
- 6. corrispondenza intera stringa con i trattini in elasticsearch
- 7. Frase separata a una parola per riga
- 8. javascript frase di interruzione a parole
- 9. Solr: query a frase esatta con EdgeNGramFilterFactory
- 10. Autorizzazioni per accedere a ElasticSearch da Lambda?
- 11. Frase corrispondente all'API ContentSearch Sitecore
- 12. elasticsearch corrisponde a due campi
- 13. tokenizer frase nltk, considera nuove righe come limite frase
- 14. MVC4 Frase motivo WebAPI?
- 15. Corrispondenza a + in un'espressione regolare
- 16. MongoDB + Elasticsearch o solo Elasticsearch?
- 17. L'ereditarietà aumenta l'accoppiamento?
- 18. Corrispondenza testo fuzzy C#
- 19. Regex: Incontro parole frase PHP
- 20. Come cambiare il colore dei caratteri a metà frase
- 21. Una spiegazione di frase a MVVM in WPF?
- 22. Tronca la frase a un certo numero di parole
- 23. Python non riesce a trovare Elasticsearch
- 24. elasticsearch QueryBuilder corrispondenti a più Condizioni
- 25. elasticsearch 0.90.2 StreamCorruptedException a chiedere porta 9300
- 26. Come faccio a testare/scherzare ElasticSearch
- 27. Molte a molte relazioni in elasticsearch
- 28. Come unire 2 query di corrispondenza in una query per elasticsearch?
- 29. partita elasticsearch vs interrogazione termine
- 30. Creazione di una query nidificata di elasticsearch per la corrispondenza su tutti i campi dell'oggetto nidificato
ma cosa succede quando voglio effettuare tale interrogazione su più indici e un insieme variabile di campi? Per quanto ne so, match_phrase funziona solo con un nome di campo specifico. Nel mio caso ho bisogno (genericamente parlando) di usare qualcosa come '{" query_string ": {" query ":" la mia frase esatta "," campi ": [" tipoA.fieldA "," tipoB.fieldB "]}}} – leandroico