2012-03-28 13 views
1

Ich fange an zu denken, dass was ich tun möchte, ist nicht möglich, aber dachte, ich würde dies versuchen.Solr erhalten berechnete Entfernung bei der Verwendung von Dismax

Ich laufe Solr 3.5.

Ich habe derzeit zwei Arten von Such:

  1. Eine grundlegende räumliche Abfrage, die zwischen zwei Punkten in der Partitur Feld calulated Entfernung zurückgibt.

Beispielabfrage aus meinen Solr Protokollen:

?fl=*,score&sort=score+asc&start=0&q={!func}geodist()&sfield=coordinates&pt=59.2363514,18.092783&version=2 
  1. A dismax Abfrage, die Textabfragen auf einer Reihe von Bereichen ermöglicht.

Beispielabfrage von Solr log:

mm=1&d=100.0&sfield=coordinates&qf=field1^5.0+fields2^3.0&defType=edismax&version=2&fl=*,score&start=1&q=monkeyhopper&pt=59.2363514,18.0927830000&fq={!geofilt}} 

Ich möchte, dass meine erste Abfrage mit der dismax Abfrage ersetzen, aber ich brauche wirklich den berechneten Abstand in der Antwort zu bekommen. Ja, ich kann die Entfernung programmatisch berechnen, aber ich würde es vorziehen, dies nicht zu tun, da Solr es schon für mich getan hat.

Ich möchte immer noch in der Lage sein, meine Dismax-Abfrage "nach Relevanz", Entfernung oder einem anderen Feld zu sortieren, so dass die von meinen Boosts angegebene Punktzahl interessant sein könnte, aber ich brauche sie nicht zurückgegeben.

Antwort

1

Pseudo-Felder sind nun in Solr 4+ verfügbar, mit denen Sie genau dies tun können.

http://localhost:8983/solr/collection1/browse?q=*:*&rows=1000&wt=xml&pt=37.763649,-122.24313&sfield=store&fl=dist:geodist() 

Zum Beispiel ermöglicht mir diese Anfrage, ein Feld "dist" zurückzugeben, das die Entfernung jedes Eintrags zum angegebenen Punkt enthält.

+1

Danke, da Solr 4 jetzt stabil ist, werde ich das als Lösung akzeptieren :) – polythene

2

Wenn ich richtig verstanden habe, möchten Sie das Ergebnis einer Funktion in Ihrer Solr-Antwort haben. Das SOLR-2444 Problem ist, was Sie suchen, ich denke: es erlaubt, in den fl Parameter Pseudofelder, Funktionen usw. einzuschließen. Das einzige Problem ist, dass es nur auf Stamm begangen wurde, also ist es nicht auf dem aktuellen Solr Release, wird nicht in der kommenden Version 3.6 sein. Du musst auf die Veröffentlichung warten, aber ich denke nicht, dass es viel Zeit in Anspruch nehmen wird. Vielleicht kannst du schon mit einem snapshot des letzten erfolgreichen Jenkins-Builds herumspielen.

+0

Ich habe mir Solr 4 angesehen und es wird wahrscheinlich mein Problem lösen. Wenn dies jedoch mit 3.5 gelöst werden kann, wäre es sogar noch besser, da es für Solr 4 noch kein Veröffentlichungsdatum zu sein scheint (obwohl Sie vielleicht recht haben könnten, wäre es jetzt nicht mehr so ​​lange) – polythene

+0

Ich denke nicht Mit Solr 3.x können Sie alles machen, was Sie wollen. Vielleicht können Sie versuchen, den Patch SOLR-2444 auf den 3x-Zweig anzuwenden, aber ich bin mir nicht sicher, ob das funktioniert. – javanna

+0

Ich lehne es programmatisch an, bis 4.0 stabil genug für die Produktion ist. – polythene