Quando si utilizza Dismax o eDismax si dovrebbe essere in grado di utilizzare solo il bf parametro di campo (Funzioni Boost) e riempirlo con il nome del campo numerico.
Esempio
Ho un indice con i documenti che contengono tra gli altri campi un valore numerico denominato first_publication_year. Quando eseguo un matchAllQuery *:*
contro il mio indice, tutti i documenti otterranno un punteggio pari a 1. Questo rende più semplice vedere l'effetto del parametro bf, poiché 1 è un divisore facile. L'esempio andrebbe comunque con qualsiasi domanda.
/select?q=*:*
Risultato
{
"responseHeader": {
"status": 0,
"QTime": 1
},
"response": {
"numFound": 10007277,
"start": 0,
"maxScore": 1,
"docs": [
{
"first_publication_year": 2002,
"score": 1
}
]
}
}
Ora voglio aumentare i documenti in base a quel campo, così aggiungo che il nome del campo come bf
parameter
/select?q=*:*&bf=first_publication_year
Risultato
{
"responseHeader": {
"status": 0,
"QTime": 1
},
"response": {
"numFound": 10007277,
"start": 0,
"maxScore": 1425.5273,
"docs": [
{
"first_publication_year": 2015,
"score": 1425.5273
}
]
}
}
Se pensi che Se la spinta è troppo bassa, è possibile regolarla con function queries. Questo campione moltiplica il primo anno di pubblicazione con 10.
/select?q=*:*&bf=product(first_publication_year,10)
Risultato
{
"responseHeader": {
"status": 0,
"QTime": 465
},
"response": {
"numFound": 10007277,
"start": 0,
"maxScore": 14248.908,
"docs": [
{
"first_publication_year": 2015,
"score": 14248.908
}
]
}
}
Riferimenti
Questo è anche documentato in the Solr Reference Manual.
BF (Funzioni Boost) Parametro
Il parametro bf specifica le funzioni (con spinte opzionali) che verranno utilizzati per costruire FunctionQueries che saranno aggiunti alla query principale dell'utente come clausole opzionali che influenza il punteggio. È possibile utilizzare qualsiasi funzione supportata nativamente da Solr e un valore di incremento. Per esempio:
recip(rord(myfield),1,2,3)^1.5
Puoi pubblicare la tua domanda completa sul tuo database solr? Sarebbe utile cos'altro stai inviando con la tua query. –
@MichealHarker - Ho provato molte cose. Nessuno di loro sembra funzionare comunque! :(Ho scoperto la stessa cosa in Elasticsearch, ma non sono riuscito a trovare l'equivalente Solr –
Potresti trovare questo link illuminante se non l'hai già visto: http: //opensourceconnections.com/blog/2014/01/20/build-your-own-custom-lucene-query-and-scorer/ Non sono sicuro che Solr possa fare ciò che vuoi nel modo esatto in cui lo vuoi, quindi avrai bisogno di essere un po 'flessibile – TMBT