2016-07-11 18 views
0

Ich benutze Apache Solr 5.1.Zu viele Ergebnisse für Apache Solr Suche

Es gibt mehr als 13000 Dokumente im Solr-Index, ich indexiere PDF-Dokumente mit Apache Tikka.

zur Verbesserung der Suchrelevanz Ich benutze Edimax Parser, und es funktioniert perfekt, ich erwarte Ergebnisse oben.

Aber anstatt nur 3 Ergebnisse für Einzelwortabfrage zu haben, gibt es mehr als 400 Ergebnisse zurück, wobei 3 erwartete Ergebnisse oben und andere Ergebnisse irrelevant sind.

Hier ist mein Feldtyp i für fast alle Felder in schema.xml

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true" omitNorms="true"> 
    <analyzer type="index"> 
     <charFilter class="solr.HTMLStripCharFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.TrimFilterFactory"/> 

     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     <filter class="solr.KeywordRepeatFilterFactory"/> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     <charFilter class="solr.HTMLStripCharFilterFactory"/> 

     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 

     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 

     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1"  generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"  splitOnCaseChange="1" /> 

    </analyzer> 
    <analyzer type="query">  
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     <filter class="solr.KeywordRepeatFilterFactory"/> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     <charFilter class="solr.HTMLStripCharFilterFactory"/> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1"  generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"  splitOnCaseChange="1" /> 
    </analyzer> 
</fieldType> 

Beispielabfrageparameter verwende.

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 149, 
    "params": { 
     "mm": "100%", 
     "qs": "10", 
     "ps": "10", 
     "indent": "true", 
     "q.op": "AND", 
     "lowercaseOperators": "true", 
     "q": "b4u", 
     "defType": "edismax", 
     "qf": "story_title^5.0 tax_payer_name^3.0 judgement_text^1.0 story_description^1.0 nature_of_the_issues decision_summary additional_comments facts_of_the_case section_number case_law_citation", 
     "pf": "story_title^5.0 tax_payer_name^3.0 judgement_text^1.0 story_description^1.0 nature_of_the_issues decision_summary additional_comments facts_of_the_case section_number case_law_citation", 
     "wt": "json", 
     "stopwords": "true", 
     "_": "1468224236421" 
    } 
    }, 

Vielen Dank im Voraus.

+0

Könnten Sie bitte die Suchanfrage oder den von Ihnen gesuchten Text teilen? –

+0

Ich habe versucht, Wörter wie "b4u" oder "ids" und auch eine Phrase Abfrage wie "verschiedene Stand in einer Transaktion" – Nilesh

+0

Ich habe Beispiel-Abfrage in Frage – Nilesh

Antwort

0

Ich löste dieses Problem durch Entfernen von HTMLStripCharFilterFactory, Es sollte HTML-Zeichen während der Indizierung zu entfernen, aber es wurde "b4u" als "b", "4" und "U" indiziert, was zu viele Ergebnisse.

Ich entferne jetzt HTML-Tags durch php strip_tags Funktion beim Indexieren.