İzlediğim tutorial’larda yeni bir Solr core’u yaratmak için solr data directory’mizdeki örnek core’u kopyalayarak ilerletiyorlar. Ama Solr dökümantasyonunda sürekli geçen ama örnek core’larda bulamadığım bir de schema.xml var. Ben de schema.xml minimum olarak nasıl olabilir ve bir core sıfırdan nasıl yaratılır bunu merak ettim. Deneme yanılmalar sonucunda ulaştığım sonuç şudur.

  1. Öncelikle tüm işlemler ssolr data klasörünüzde olacak. Bu mac’lerde Homebrew ile solr kurmuşsanız genelde /usr/local/var/lib/solr/ oluyor. Bunun içinde core’un adı ne olacaksa o isimde bir klasör yaratılmalı. Benim core’umun adı “hope” olacak. Bu isimde bir klasör yaratıyorum.
  2. “hope”un içinde şu klasörler olmalı
    1. conf (içinde elevate.xml olmalı. Örnek klasörden bulabilirsiniz.)
      1. lang (schema’daki her bir dil için stopwords dosyaları olmalı. Bunlar da örnek klasörde mevcut.)
    2. data
  3. core’un root dizinine örnek klasörden alınacak “solrconfig.xml” ve core şemanızı gösteren bir “schema.xml” atılmalı. Ben çok basit bir şemayı şöyle yaptım.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Solr managed schema - automatically generated - DO NOT EDIT -->
<schema name="example" version="1.6">
<uniqueKey>id</uniqueKey>
<fieldType name="alphaOnlySort" class="solr.TextField" omitNorms="true" sortMissingLast="true">
<analyzer>
<tokenizer name="keyword"/>
<filter name="lowercase"/>
<filter name="trim"/>
<filter pattern="([^a-z])" replacement="" name="patternReplace" replace="all"/>
</analyzer>
</fieldType>
<fieldType name="text_tr" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="standard"/>
<filter name="apostrophe"/>
<filter name="turkishLowercase"/>
<filter words="lang/stopwords_tr.txt" ignoreCase="false" name="stop"/>
<filter name="snowballPorter" language="Turkish"/>
</analyzer>
</fieldType>
<fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
<fieldType name="strings" class="solr.StrField" sortMissingLast="true" docValues="true" multiValued="true"/>
<fieldType name="plong" class="solr.LongPointField" docValues="true"/>

<field name="_root_" type="string" docValues="false" indexed="true" stored="false"/>
<field name="_src_" type="string" indexed="false" stored="true"/>
<field name="_version_" type="plong" indexed="false" stored="false"/>
<field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="isim" type="text_tr" omitNorms="true" indexed="true" stored="true"/>
</schema>

Core bir kez yaratıldıktan sonra solr “schema.xml”‘i schema.bak yapıyor ve schema.xml’in içeriğini hatalı şekilde data>managed-schema.xml ‘e taşıyor. Ama doğru taşımadığı core oluşturulurken hata alınabiliyor. Bu durumda schema.bak’ın içeriğini alıp “managed-schema.xml” in içine yapıştırmak gerekebilir.

Her şey yolunda gitti ve Solr yeni core’u yarattıysa dizin yapınız aşağıdakine benzer olacaktır. Burada gördüğünüz ama yukarıda bahsetmediğim dosya ve klasörleri solr kendisi yarattı.

Leave a Reply

Your email address will not be published. Required fields are marked *