Ich habe im Grunde das gleiche Problem wie hier diskutiert: Solr Wildcard-Abfrage mit Leerzeichen , aber diese Frage wurde nicht beantwortet.
Ich verwende einen Platzhalter in einer Filterabfrage für ein Feld namens "Marke".
Ich habe Probleme, wenn der Markenname Leerzeichen enthält. Zum Beispiel funktioniert die Filterung der Marke "Lexington" gut, wenn ich sage: fq = {! Tag = brand} brand: Lexing * n. Eine Marke mit mehreren Wörtern wie "Athentic Models" verursacht jedoch Probleme. Es scheint, dass doppelte Anführungszeichen um den Namen eingefügt werden müssen.
Wenn es "s, * s nichts gibt, zB Marke:" Authentic Mode * "oder Marke:" Lexingt * ", passt nichts. Ohne Anführungszeichen funktioniert es, Marke zu sagen: Authentisch *, ohne Anführungszeichen und ohne Leerzeichen und mit Authentic-Modellen, aber sobald Leerzeichen im Markennamen enthalten sind, scheint die Zeichenfolge beim Abgleich nur bis zum ersten Leerzeichen zu passen.
Das Markenfeld ist vom Typ
%Vor%Das ist kein Leerzeichen, das zu meinem Verständnis in Token umgewandelt wurde. Es wird jedoch mit einem copyField aus einem whitespace-Token-Feld gefüllt.
Gibt es etwas, was ich tun kann, um zu verhindern, dass Solr die Filterabfrage ohne doppelte Anführungszeichen tokentiert?
Genau wie Rob in seiner Antwort gesagt hat, habe ich selbst eine Antwort zu der Frage gepostet, die er verlinkt hat .
Sie müssen lediglich den Platz in Ihrer Abfrage (wie in customer_name:Pop *Tart
- & gt; customer_name:Pop\ *Tart
) ausschließen.
Aus meiner Erfahrung funktioniert diese Methode, egal wo Sie die Platzhalter platzieren, die von Solr behauptet, dass etwas wie:
Wird wie folgt analysiert:
%Vor%Versuchen Sie, den Typ von string in etwas wie text zu ändern. Der Zeichenfolgentyp wird nicht mit einem Token versehen. Wenn in einem Zeichenfolgenfeld ein Leerzeichen enthalten ist, wird er versuchen, Ihre Abfrage abzugleichen, einschließlich der Leerzeichen im Feld.
In der Standard-Schemadatei können Sie diese Zeile direkt über dem Zeichenfolgenfeldtyp
sehen %Vor%mit einem Texttyp sollte Ihr Problem beheben, wie text_general oder ein ähnliches.
Ich habe eine mögliche Lösung auf die ursprüngliche Frage Solr Wildcard-Abfrage mit hinzugefügt Leerzeichen
Beachten Sie, dass dies NUR mit nachfolgenden Platzhaltern funktioniert. Ich weiß, dass dieses Frage-Beispiel den Platzhalter in der Zeichenfolge verwendet, aber es dient dazu, einen bestimmten Fall der Frage in Punkt zu beantworten.
Grundsätzlich kommt es darauf an, das FieldQParserPlugin zu verwenden Abfrageparser. Überprüfen Sie meinen Beitrag auf der ursprünglichen Frage für weitere Details, damit ich nicht verachtet werde, mich zu wiederholen.