2016-11-06 5 views
0

Solr ist das Entfernen des Buchstaben ‚e‘ von Suchanfragen ...Solr das ‚e‘ von ace001 Suchbegriff

Ich bin ziemlich neu zu entfernen, wenn es um Solr kommt, damit ich nicht wirklich wissen, wo man beginnen, um dies herauszufinden, aber wenn ich eine Suchabfrage Solr senden wird, um das ‚e‘ Charakter Strippen ...

Wie Sie hier sehen können, wenn ich versuche und suchen den Begriff ace001

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 1, 
    "params": { 
     "q": "_text:ace001", 
     "indent": "true", 
     "wt": "json", 
     "debugQuery": "true", 
     "_": "1478467316690" 
    } 
    }, 
    "response": { 
    "numFound": 0, 
    "start": 0, 
    "docs": [] 
    }, 
    "debug": { 
    "rawquerystring": "_text:ace001", 
    "querystring": "_text:ace001", 
    "parsedquery": "PhraseQuery(_text:\"ac 001 ac 001\")", 
    "parsedquery_toString": "_text:\"ac 001 ac 001\"", 
    "explain": {}, 
    "QParser": "LuceneQParser", 
    "timing": { 
     "time": 1, 
     "prepare": { 
     "time": 1, 
     "query": { 
      "time": 1 
     }, 
     "facet": { 
      "time": 0 
     }, 
     "mlt": { 
      "time": 0 
     }, 
     "highlight": { 
      "time": 0 
     }, 
     "stats": { 
      "time": 0 
     }, 
     "spellcheck": { 
      "time": 0 
     }, 
     "debug": { 
      "time": 0 
     } 
     }, 
     "process": { 
     "time": 0, 
     "query": { 
      "time": 0 
     }, 
     "facet": { 
      "time": 0 
     }, 
     "mlt": { 
      "time": 0 
     }, 
     "highlight": { 
      "time": 0 
     }, 
     "stats": { 
      "time": 0 
     }, 
     "spellcheck": { 
      "time": 0 
     }, 
     "debug": { 
      "time": 0 
     } 
     } 
    } 
    } 
} 

Searching ein anderer Begriff wie "acb001" streift das "b" nicht ab, aber ich habe bemerkt, dass es das taub trennt ers aus den Briefen. Ich würde wollen Solr den Begriff ‚acb001‘ im Textfeld passen ...

Extrakt:

"rawquerystring": "_text:acb001", 
"querystring": "_text:acb001", 
"parsedquery": "PhraseQuery(_text:\"acb 001 acb 001\")", 
"parsedquery_toString": "_text:\"acb 001 acb 001\"", 
"explain": {}, 
"QParser": "LuceneQParser", 

würde wirklich eine Richtung erkennen hier, wie ich kann entweder weiter auszutesten oder idealerweise dieses Problem zu beheben also gibt ace001 alle Vorkommen von genau dem zurück.

Edit:

Schema ist Standard/default http://pastebin.com/59LbmJUp

+0

können Sie Ihre schema.xml veröffentlichen? – root545

+1

Ich vermute, Ihr Analysator beinhaltet einen WordDelimiterFilter und einen Stemmer, also wird "ace001" in "ace" und "001" getrennt, dann wird "ace" auf "ac" gesetzt. – femtoRgon

+0

@femtoRgon Ich würde sagen, du hast recht, ich versuche nur zu trainieren, wie ich es verhindern kann ... –

Antwort

4

dies wegen solr.PorterStemFilterFactory geschieht. Ihre Standard-Suchfeld-ID ist htmltext, die in der Abfrageanalyse <filter class="solr.PorterStemFilterFactory"/>

hat.

Der PorterStemmer leitet das Wort "ace" zu "ac". Sie können es hier überprüfen https://tartarus.org/martin/PorterStemmer/voc.txt Suche nach dem Wort "Ace". jetzt hier die Ausgabe https://tartarus.org/martin/PorterStemmer/output.txt das entsprechende Wort nach stamm nach ergeben hat entsprechende welche „ac“ wird

zu lösen diese die Filter während der Abfrage revmoe sowie Index in solrconfig.xml

Sie auch verwenden WordDelimiterFilterFactory, die Wörter auf alphanumerischen Bounders teilen. Deshalb sehen Sie "ac" und "001", wenn Sie das nicht möchten, dann entfernen Sie diesen Filter auch in schema.xml

Sie verwenden Standard schema.xml, die viele dieser unnötigen Filter hat, die Sie möglicherweise nicht einmal brauchen. Ich würde vorschlagen, es auf ein paar Filter zu streichen. und dann Filter hinzufügen, wie Sie brauchen, anstatt umgekehrt.

+0

Danke für die Antwort, ich habe alle Spuren von PorterStemFilterFactory aus schema.xml entfernt und ich konnte nicht finde keine in solrconfig.xml, aber ich bekomme immer noch genau dieselben Ergebnisse; –

+0

haben Sie den Kern neu geladen? – root545

+0

@Peavers hat es dein Problem gelöst? – root545