2016-04-22 3 views
1

Die andere Woche habe ich eine Frage zum Entfernen von Interpunktion von Solr Suche in Drupal gestellt. Das war mit Solr 4. Seitdem hat sich die Entwicklung, die ich mache, von Solr 4 auf Solr 5 geändert, und jetzt habe ich das gleiche Problem, aber das Update bei Can't remove punctuation in Solr funktioniert nicht mehr. Dies führt zu Problemen bei der Sortierung nach Titeln, da viele Inhaltstitel in Anführungszeichen stehen.Interpunktion in Titeln kann nicht ignoriert werden - Solr 5 und Drupal

<field name="label" type="text" indexed="true" stored="true" termVectors="true" omitNorms="true"/> 
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="stopwords.txt" 
      /> 
    <filter class="solr.WordDelimiterFilterFactory" 
      protected="protwords.txt" 
      generateWordParts="1" 
      generateNumberParts="1" 
      catenateWords="1" 
      catenateNumbers="1" 
      catenateAll="0" 
      splitOnCaseChange="0" 
      preserveOriginal="1"/> 
    <filter class="solr.LengthFilterFactory" min="2" max="100" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
    </analyzer> 
</fieldType> 

Ich habe versucht, indem Sie die folgenden Regeln aber Apostrophe und Anführungszeichen dort bleiben hartnäckig und stören, wenn sie durch Titel sortieren, mit Anführungszeichen setzt alles am Anfang zuerst auf der Liste.

<charFilter class="solr.HTMLStripCharFilterFactory" /> 
    <filter class="solr.ApostropheFilterFactory"/> 
    <filter class="solr.PatternReplaceFilterFactory" 
     pattern="^\p{Punct}*(.*?)\p{Punct}*$" 
     replacement="$1"/> 
+0

Haben Sie den gleichen Feldtyp versucht ...? Oder versuchen Sie, indem Sie den Kohlefilter entfernen ... –

+0

Ich habe gerade versucht, den Kohlefilter zu entfernen, kein Erfolg damit. Kannst du erklären, was du über den gleichen Feldtyp meinst? – ankles

Antwort

0

Alle der Solr Lösungen habe ich versucht, waren leider wirkungslos, so dass ich es von der Drupal Seite gelöst, die viel einfacher entpuppte. Der folgende Code ersetzt alle Sonderzeichen und Zahlen, wandelt die Zeichenfolge in Kleinbuchstaben um und fügt sie dann dem solr-Dokument hinzu. Die zweite Funktion fügt sie den verfügbaren Sortiermethoden hinzu.

function my_module_apachesolr_index_document_build(ApacheSolrDocument $document, $entity, $entity_type, $env_id) { 

     # to keep letters only 
     $title = trim($entity->title); 
     $title = str_replace(' ', '_', $title); 
     $title = preg_replace('/[^a-z]+/i', '', $title); 
     $title = strtolower($title); 
     $document->addField('ss_new_sort',$title); 

} 

function my_module_apachesolr_query_prepare(DrupalSolrQueryInterface $query) { 
     $query->setAvailableSort('ss_new_sort', array('title' => t('Title'), 'default' => 'asc')); 
} 
Verwandte Themen