Frage

Hey Leute, ich versuche, einige Suchfunktionen für eine Anwendung zu implementieren.

Solr 1.4.1 Auf Tomcat7 JDBC -Verbindung zu einem MS SQLServer mit der Ansicht IM -Indexierung SolR hat die Indexierung abgeschlossen und der Index funktioniert.

Um Solr zu suchen und mit ihm zu kommunizieren, habe ich einen kleinen WCF-Testdienst erstellt (der später mit unserem Hauptdienst implementiert werden soll).

Der Zweck besteht darin, ein Textfeld in unserer Hauptanwendung zu implementieren.In diesem Textfeld können Benutzer mit der Eingabe von etwas wie „Pinsel“ beginnen und nach und nach die Liste der Objekte durchsuchen, während immer mehr Zeichen eingegeben werden.

Bis zu einem gewissen Punkt funktioniert das mit Solr einwandfrei.Ich benutze das Wildcard -Sternchen am Ende meiner Abfrage und als solches werfe ich viele Anfragen wie P* Pa* Pain* Paint* werfen

usw.auf dem Server und die zurückgegebenen Ergebnisse funktionieren einwandfrei (eigentlich ziemlich beeindruckend schnell).Das einzige Problem besteht darin, dass die Abfrage „paintbrush*“ lautet, sobald der Benutzer das gesamte Wort eingibt. An diesem Punkt gibt solr 0 Ergebnisse zurück.

Es scheint also, dass Abfrage+Platzhalter nur Abfrage+etwas und nicht Abfrage+nichts sein kann

Ich habe es geschafft, dies unter Lucene.Net zum Laufen zu bringen, aber Solr macht die Dinge nicht so, wie es scheint.

Können Sie mir einen Rat zur Implementierung einer solchen Funktion geben?

Es gibt nicht viel Code zum Anschauen, da ich SolrNet verwende: http://pastebin.com/tXpe4YUe

Ich vermute, dass es etwas mit dem Analysator und dem Parser zu tun hat, aber ich bin noch nicht so begeistert von Solr, um zu wissen, wo ich suchen muss :)

War es hilfreich?

Lösung 2

Stemming scheint die Ursache des Problems zu sein.Ich habe es behoben, indem ich einen Klon von text_ws anstelle von Text für den Typ verwendet habe.Meine Änderungen an scema.xml: http://pastebin.com/xaJZDgY4

Die Wortstammerkennung ist deaktiviert und die Indizierung in Kleinbuchstaben ist aktiviert.Solange alle Abfragen in Kleinbuchstaben erfolgen, sollten sie immer Ergebnisse liefern (wenn überhaupt).

Das Problem scheint zu sein, dass Analysatoren nicht mit Platzhaltern arbeiten, sodass die Logik, die Johnny zum Ergebnis von Johni oder Johnni machen würde, bei der Verwendung von Platzhaltern „kaputt“ ist.

Wenn Sie mit ähnlichen Problemen konfrontiert sind und meine Lösung hier nicht ganz funktioniert, können Sie debugQuery=on zu Ihrer Abfragezeichenfolge hinzufügen und etwas mehr darüber erfahren, was vor sich geht.Das hat mir geholfen, das Problem einzugrenzen.

Andere Tipps

Ich würde in Solr keine Vorschläge mit Präfix-Wildcard-Abfragen implementieren.Dafür gibt es andere Mechanismen, die besser geeignet sind.Sehen:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top