2016-03-30 11 views
2

Ich habe ein Mehrwert-Feld in solr die Namen für Benutzer wieSuche nach Mehrwert-Feld in solr nicht funktioniert

{ 
    "counsel_for_department": [ 
     "mr a g srivastava with mr xyz doe, 
     " mr johh david and mr john deo", 
     " mr n p smith and mr ng smith", 

    ] 
    }, 

Whenver I wie fq=counsel_for_department:a g srivastava abfragen, ist es keine Ergebnisse zurück. Ich verwende Standard tokenizer für dieses Feld

Feldtyp für dieses Feld ist text_general

Lassen Sie mich wissen, wenn wir verschiedene Einstellungen für Mehrwert-Feld konfigurieren.

Ich erhalte folgende json Objekt

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 20, 
    "params": { 
     "q": "*:*", 
     "indent": "true", 
     "fl": "counsel_for_department", 
     "fq": [ 
     "doc_type:source_analysis", 
     "counsel_for_department:*g*c*Srivastava*" 
     ], 
     "rows": "100", 
     "wt": "json", 
     "debugQuery": "true", 
     "_": "1459351342391" 
    } 
    }, 
    "response": { 
    "numFound": 0, 
    "start": 0, 
    "docs": [] 
    }, 
    "debug": { 
    "rawquerystring": "*:*", 
    "querystring": "*:*", 
    "parsedquery": "MatchAllDocsQuery(*:*)", 
    "parsedquery_toString": "*:*", 
    "explain": {}, 
    "QParser": "LuceneQParser", 
    "filter_queries": [ 
     "doc_type:source_analysis", 
     "counsel_for_department:*g*c*Srivastava*" 
    ], 
    "parsed_filter_queries": [ 
     "doc_type:source_analysis", 
     "counsel_for_department:*g*c*srivastava*" 
    ], 
    "timing": { 
     "time": 20, 
     "prepare": { 
     "time": 16, 
     "query": { 
      "time": 16 
     }, 
     "facet": { 
      "time": 0 
     }, 
     "facet_module": { 
      "time": 0 
     }, 
     "mlt": { 
      "time": 0 
     }, 
     "highlight": { 
      "time": 0 
     }, 
     "stats": { 
      "time": 0 
     }, 
     "expand": { 
      "time": 0 
     }, 
     "debug": { 
      "time": 0 
     } 
     }, 
     "process": { 
     "time": 3, 
     "query": { 
      "time": 3 
     }, 
     "facet": { 
      "time": 0 
     }, 
     "facet_module": { 
      "time": 0 
     }, 
     "mlt": { 
      "time": 0 
     }, 
     "highlight": { 
      "time": 0 
     }, 
     "stats": { 
      "time": 0 
     }, 
     "expand": { 
      "time": 0 
     }, 
     "debug": { 
      "time": 0 
     } 
     } 
    } 
    } 
} 

Vielen Dank im Voraus

+0

möchten Sie eine Nur-Text-Suche in einem mehrwertigen Feld durchführen? Ist das korrekt? – jeorfevre

+0

ja das ist richtig – Nilesh

Antwort

1

Wildcard-Abfragen werden nicht analysiert, daher ist es in den meisten Fällen besser, sich von ihnen fern zu halten und stattdessen Term-Übereinstimmungen zu verwenden. Auf diese Weise können Sie Dokumente unabhängig von der Reihenfolge der Begriffe anpassen, so dass "john oliver" auch "oliver john" entspricht, wobei "john oliver" auf der Grundlage der Phrasenanpassung verstärkt wird.

Die Erweiterung einer Wildcard-Übereinstimmung besteht nur dann, wenn das tatsächliche Token im zugrunde liegenden Dataset übereinstimmt. Wenn Tokenizer und Filterkette vorhanden sind, wird es im Allgemeinen nicht ausgelöst, wenn Sie ein Platz in der Mischung.

Lassen Sie die Wildcards fallen und verwenden Sie die richtige Anpassung (was Solr wirklich gut macht).

0

Für Klartextsuche sollten Sie gehen:

fq=counsel_for_department:*a g srivastava* 

//OR you can also use : 

fq=counsel_for_department:*a*g*srivastava* 

Verwendung wie dies auf den ersten. Aber es ist eine relativ teure/langsame Abfragen in SOLR. Als eine Verbesserung, wenn diese Abfrage sehr teuer ist (dauert zu viel Zeit), sollten Sie mehrwertige Feld in 1 konsolidierten Feld transformieren. und dieses Feld anstelle des mehrwertigen Feldes abfragen.

+0

hat nicht funktioniert für mich – Nilesh

+0

hum ... sollte funktionieren wie ein charme ... können sie mir bitte die komplette solr objekt (als json) – jeorfevre

+0

meine frage mit json antwort – Nilesh