Ich habe eine sehr einfache Abfrage haben:Gibt es eine Möglichkeit, einen Score-Bereich (oder eine maximale Punktzahl) für eine Abfrage zu setzen
match: {
field => {
boost: 4,
query: term,
fuzziness: 'AUTO',
}
}
Komponiert mit mehreren (ca. 10) andere fragt die meisten von ihnen constant_score verwenden. Das Problem ist, dass meine Abfrage zu bestimmten Bedingungen eine zu hohe Punktzahl hat, die alle anderen Abfrageergebnisse abbricht.
ist hier ein Teil der Erklärung:
"details" => [
[0] {
"value" => 63.656006,
"description" => "sum of:",
"details" => [
[0] {
"value" => 63.656006,
"description" => "weight(title.de:kandinsky in 1694239) [PerFieldSimilarity], result of:",
"details" => [
[0] {
"value" => 63.656006,
"description" => "score(doc=1694239,freq=1.0 = termFreq=1.0\n), product of:",
"details" => [
[0] {
"value" => 4.0,
"description" => "boost",
"details" => []
},
[1] {
"value" => 11.3820715,
"description" => "idf, computed as log(1 + (docCount - docFreq + 0.5)/(docFreq + 0.5)) from:",
[...]
Hat Sie sehen können, habe ich eine Punktzahl von 11,38 auf Grund der IDF haben. Meine anderen Abfragen (mit Noten zwischen 1 und 3) sind völlig nutzlos.
Meine Frage ist:
Wie kann ich eine maximal mögliche Punktzahl für eine Abfrage festgelegt?
Oder noch besser, kann ich einen Bereich der Punktzahl für meine Abfrage festlegen?
Ich möchte eine constant_score Abfrage für dieses Feld vermeiden, ich brauche ein paar TF/IDF und Score-Begriff für dieses Feld, aber nicht so stark.
Ich versuchte dies:
function_score: {
query: { match: {
field => term,
}},
score_mode: :avg,
script_score: {
script: {
inline: "4 * (1 + Math.log(2 + _score))",
}
},
}
Es ist besser, aber es kann immer noch eine sehr hohe Punktzahl auf bestimmten Fällen durchzuführen.
Ja, ich habe es bereits versucht (ich habe gerade das OP aktualisiert). Es erlaubt mir nicht, einen Score-Bereich zu erstellen, nur um einige der Score-Werte zu begrenzen. –