2016-06-10 6 views
0
  1. Feldtyp enthält:Solr Rückkehr falsche Dokumente während Feld suchen Punkte in solr.StrField

    Feldtyp name = "StrCollectionField" class = "solr.StrField" omitNorms = "true" mehrwertig = "true" docValues = "true"

    Feld name = "po_line_status_code" type = "StrCollectionField" indiziert = "true" gespeichert = "true" required = "false" docValues ​​= "false"

    po_no ist PK

  2. Index-Wert: po_line_status_code: [3700.100]

  3. Suchanfrage: po_line_status_code: (1100,200 1100,500 1100,600 1100,400 1100,300 1100,750 1100,450)

Ergebnis: Erste Ergebnisse mit po_line_status_code: [3700.100] auch.

Doziert Solr intern solr.StrField mit Punkten oder gibt es hier einen regulären Ausdruck? Klingt für mich wie ein Käfer.

Wir haben nicht dieses Dokument erhalten, wenn wir die Abfrage eine der folgenden 1> po_line_status_code ändern: (1.200,200 1.200,500 1.200,600 1.200,400 1.200,300 1.200,750 1.200,450) 2> po_line_status_code: (1.100,200 1.100,500 1.100,600 1.100,400 1.100,300 1.100,750 1.100,450) UND po_no: 938792842

Wir verwenden DSE Version: 4.7.4 mit Apache Solr 4.10.3.0.203.

Debug Abfrageausgabe von einem der Server die falsche Dokumente zurückgibt: response = {numFound = 2, start = 0, docs = [SolrDocument {po_no = 4575419580094, po_line_status_code = [3700,4031]}, SolrDocument {po_no = 1575479951283 , po_line_status_code = [3700.100]}]}, debug = {roquequerstring = po_line_status_code: (1100 1100.500 1100 1100600 1100 1100 400 343 344 345 346 347 409 410 428 1100.750 1100.450), querystring = po_line_status_code: (3 1100.200 29 5 6 1100.300 63 199 1100.500 200 1100.600 198 1100.400 344 345 346 343 347 409 410 428 1.100,750 1.100,450)]

ich sehe auch die unten stehende Sache in der Antwort, die ich glaube, etwas zu tun hat mit Ranking oder so:

No Match auf erforderliche Klausel (po_line_status_code: 3 po_line_status_code: 1100,200 po_line_status_code: 29 po_line_status_code: 5 po_line_status_code: 6 po_line_status_code: 1100,300 po_line_status_code: 63 po_line_status_code: 199 po_line_status_code: 1100,500 po_line_status_code: 200 po_line_status_code: 1100,600 po_line_status_code: 198 po_line_status_code: 1100,400 po_line_status_code : 343 po_line_status_code: 344 po_line_status_code: 345 po_line_statuscode: 346 po_line_statuscode: 347 po_line_statuscode: 409 po_line_statuscode: 410 po_line_statuscode: 428 po_line_statuscode: 1100.750 po_line_statuscode: 1100.450) \ n 0.0 = (NON-MATCH) Produkt von: \ n 0.0 = (NON-MATCH) Summe von: \ n 0.0 = Koord (0/23) \ n 0.015334824

Könnte es auch etwas mit der Neuindizierung zu tun haben? Wenn ich meine Dokumente neu indexiere, behebt es das Problem?

Die Links zu doc-Datei solr Schema und solr Config enthält, kann here

+0

In welcher Version sind Sie? – Bereng

+0

Was zeigt debugQuery? StrField sollte nur exakte Übereinstimmungen geben. Haben Sie versucht, nur eine einzige Abfrage für den Wert auszugeben? (Ich bin mir nicht sicher, ob Ihr Beispiel übereinstimmen würde, selbst wenn Tokenization passierte, da keine Zahlen identisch sind) – MatsLindh

+1

Funktioniert gut auf solr 4.10.4; Auf diesem Feld findet keine Tokenisierung statt und auch kein "regulärer Ausdruck". Es ist schwer zu erkennen, was Sie ohnehin erreichen würden, selbst wenn es Tokening geben würde. –

Antwort

0

Ich habe setzen diese in einer Antwort gefunden werden, da die Kommentare Formatierung nicht erlauben.

Nein, es ist kein Versionsproblem oder ein Tokenizer-Problem oder ein Fehler in solr.

solr.StrField wird weder bei der Analyse noch bei der Abfrage in Token umgewandelt. Es passt zu etwas anderem. Können Sie solrconfig.xml und schema.xml posten?

Wenn Sie auf po_line_status_code suchen ist dies die debug sollten Sie sehen:

"querystring": " po_line_status_code:(1100.200 1100.500 1100.600 1100.400 1100.300 1100.750 1100.450)", 
    "parsedquery": "(+(po_line_status_code:1100.200 po_line_status_code:1100.500 po_line_status_code:1100.600 po_line_status_code:1100.400 po_line_status_code:1100.300 po_line_status_code:1100.750 po_line_status_code:1100.450))/", 

Während, was Sie sehen

ist
querystring=ship_node:610055 AND po_line_status_code:(3 1100.200 29 5 6 1100.300 63 199 1100.500 200 1100.600 198 1100.400 343 344 345 346 347 409 410 428 1100.750 1100.450) AND expected_ship_date:[2016-02-03T16:00:00.000Z TO 2016-06-09T13:59:59.059Z] 

So Ihre Query-String geändert wurde. Ich nehme an, dass alle Ihre Fragen über das Solr-Admin-Tool sind? Das sollte DSE aus der Schleife lassen.

Ich würde immer noch nicht erwarten, dass Ihre Abfrage übereinstimmt, aber die Dinge sind komplizierter als Sie sie präsentiert haben, da Sie ship_node und expected_ship_date auch in Ihrer Abfrage haben.

Oh die Keine Übereinstimmung auf erforderliche Klausel sagt, dass Sie nichts mit der po_line_status_code Abfrage übereinstimmen.

+0

Ich habe meine Frage bearbeitet und den ship_node, expected_ship_date, aus dem Bild entfernt. Ja, ich frage dies durch Solr Admin-Tool. Der interessante Teil hier ist, dass ich die Ergebnisse bekomme, obwohl ich No Match auf erforderlicher Klausel sehe – Akshay

+0

Kannst du dein Schema und solrconfig in deiner Frage posten? –

+0

Ich habe den Link zu solr Schema und Config in der Frage hinzugefügt. – Akshay