2016-04-11 25 views
0

Bir Drupal sitesindeki içeriği sorgulamak için solr'im var. Başlık alanlarının çoğunun dizenin başında noktalama işareti vardır ve bu yüzden başlığa göre sıraladığımda noktalama işareti listenin en üstünde görünür.Noktalama işareti kaldırılamadı Solr

Başlığa göre sıralanırken başlığı görmezden gelmek için solr almak istiyorum ama denediğim çözümlerin hiçbiri işe yaramıyor.

Ben solr için oldukça yeni ve bu yüzden yanlış yapıyorum gerçekten basit bir şey olabilir ... schema.xml dosyasında neler olup bittiğini gerçekten anlamıyorum!

Başlık alanı solr olarak adlandırılır ve çalışmayan solr.PatternReplaceFilterFactory içinde çeşitli yöntemleri denedim.

<field name="label" type="text" indexed="true" stored="true"  termVectors="true" omitNorms="true"/> 
<copyField source="label" dest="sort_label"/> 

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
<charFilter class="solr.HTMLStripCharFilterFactory"/> 
<filter class="solr.PatternReplaceFilterFactory" 
      pattern="(^\p{Punct}+)" replacement="" replace="all" 
    /> 
<tokenizer class="solr.WhitespaceTokenizerFactory"/> 

    <filter class="solr.StopFilterFactory" 
      ignoreCase="true" 
      words="stopwords.txt" 
      enablePositionIncrements="true" 
      /> 
    <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> 
    <analyzer type="query"> 
… 
</analyzer> 

Benim sorgu başlangıç ​​= 0 & satır = 25 & q = eğitim & fl = id% 2Centity_id% 2Centity_type% 2Cbundle% 2Cbundle_name% 2Csort_label% 2Css_language% 2Cis_comment_count% 2Cds_created% 2Cds_changed% 2Cscore % 2Cpath% 2Curl% 2Cis_uid% 2Ctos_name% 2Czm_parent_entity% 2Css_filemime% 2Css_file_entity_title% 2Css_file_entity_url & pf = içerik% 5E2.0 & & sıralama = SORT_LABEL% 20asc

+0

fielType metnini schema.xml dosyasından paylaşabilirsiniz? –

+0

Bitti - açılış alan türü etiketi eksik – ankles

cevap

1

Bu, WordDelimiterFilterFactory ile yapılır. Ayarı generateWordParts=1. Bu filtreyi

'inize ekleyin. schema.xml'u değiştirdikten sonra sunucuyu yeniden başlatın ve verileri yeniden tarayın.

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
<analyzer> 
<tokenizer class="solr.WhitespaceTokenizerFactory"/> 

     <filter class="solr.StopFilterFactory" 
       ignoreCase="true" 
       words="stopwords.txt" 
       enablePositionIncrements="true" 
       /> 
     <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> 
+0

Üzgünüm Yanlış yapmadan sürece, zaten var. – ankles

+0

Şimdi eklediğimi deneyebilir misin ...? Bunun sizin için uygun olup olmadığını kontrol edelim mi? –

+0

Bu, aramada bazı sorunlara yol açmış gibi görünüyor, bence önyargı ve diğer tweaks ayarlarım artık çalışmıyor. Analizör tipi = "index" kaldırılmış mı? Ben türünü belirtmezseniz soruna neden – ankles