2016-04-05 13 views
0

Ich versuche eine sehr einfache Solr-Anwendung zu erstellen, wo ich Titel und ID indexieren werde. Ich möchte Titel ohne jeden Fall suchen und ich habe LowerCaseFilterFactory Filter aber einige, wie es nicht funktioniert. Ich möchte auch die Suche unterstützen.Case insensitive Suche Solr 5.5

Unten ist meine Schemadatei.

<?xml version="1.0" encoding="UTF-8" ?> 

<schema name="example" version="1.5"> 

    <field name="_version_" type="long" indexed="true" stored="true"/> 
    <field name="_root_" type="string" indexed="true" stored="false"/> 
    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

<uniqueKey>id</uniqueKey> 
<field name="title" type="text" indexed="true" stored="true"/> 
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> 
<fieldType name="string" class="solr.StrField" sortMissingLast="true" /> 
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
       <tokenizer class="solr.KeywordTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
</fieldType> 
</schema> 

Jeder Zeiger wird sehr geschätzt.

Vielen Dank im Voraus.

Antwort

2

Sie verwenden "KeywordTokenizerFactory" für die Indizierung und "WhitespaceTokenizerFactory" für die Abfrage.

Hier ist der Ausgang für beide unterschiedlich.

KeywordTokenizerFactory behält das Wort so wie es ist. Es wird das Wort/den Text nicht symbolisieren.

Aber WhitespaceTokenizerFactory ist ein Tokenizer, der Text in Leerzeichen unterteilt.

PorterStemFilterFactory: ein Normalisierungsprozess, der gemeinsame Endungen von Wörtern entfernt.

Example: "riding", "rides", "horses" ==> "ride", "ride", "hors". 

Sie können versuchen, das Feld Typ zu ändern.

Nun ist es Ihre Anforderung gelassen, dass wie wollen Sie die Suche implementieren wollen und dann entscheiden, die die benutzerdefinierten fieldType oder können die fieldType im schema.xml

erwähnt verwenden bauen können Sie ein Feld Typen versuchen, wie unten für Ihre Feldtitel

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
     <analyzer type="query"> 
       <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
     </analyzer> 
</fieldType> 

ODER

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.LowerCaseFilterFactory" /> 
       <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
</fieldType> 
+0

ich versuchte gleich, aber nach wie vor Groß- und Kleinschreibung Suche nicht funktioniert. Ich verwende verwaltete Schemata anstelle von schema.xml –

+0

Haben Sie dasselbe auf der Benutzeroberfläche von solr admin verifiziert? Haben Sie nach den Änderungen den Server neu gestartet und die Daten neu indiziert? –