2012-02-08 8 views
5

Czy jest możliwe udostępnienie Solr fieldType s zdefiniowanej w schema.xml między wieloma rdzeniami?W jaki sposób typy pól Solr mogą być współużytkowane przez wiele rdzeni?

Mam kilka rdzeni w Solr i znajduję się ponownie definiować fieldType s, które są oparte tylko na wbudowanych filtrów i tokenizatorów. na przykład

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

wiem co mogę napisać własny Field klasę i podzielić się tym między rdzeniami, ale wydaje się głupie stworzyć zależność niestandardowego kodu, gdy kod niestandardowy będzie skonfigurowanie tylko standardowych filtrów. Czy istnieje lepszy sposób?

Należy zauważyć, że powyższy przykład jest prosty w porównaniu do niektórych innych (które konfigurują słowa kończące i konwersje znaków itp.).

Odpowiedz

1

Nie wiem, jak podzielić się typami pól między rdzeniami. Jeśli jednak wszystkie rdzenie mają taki sam schemat (na przykład te same pola i typy pól), można udostępnić je między wieloma rdzeniami i tylko trzeba zaktualizować schemat w jednym miejscu. Więcej informacji na temat konfiguracji można znaleźć na liście dyskusyjnej Solr użytkownika: Sharing Schema with multiple cores.

+0

Dzięki, niestety nie udostępniają one tych samych pól. – beerbajay

+1

Zobacz https://issues.apache.org/jira/browse/SOLR-3087?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel Jeśli zostanie naprawiony, będzie można to zrobić. Więc może w końcu;) – mrmuggles

2

Udostępnianie typu pola, takich jak "wspólne" definicje w pliku schema.xml, solrconfig.xml w wielu rdzeniach jest możliwe przy użyciu XInclude.

<?xml version="1.0" encoding="UTF-8" ?> 
<!-- common-types.xml --> 
<types> 
<fieldType name="exact" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
    </analyzer> 
</fieldType> 
</types> 

i używać go w schema.xml jak poniżej:

<schema version="1.1"> 
    <types> 
    <!-- Other types here --> 
    </types> 
    <xi:include href="file:/path/to/common-types.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> 
</schema> 

Wskazówka: Wliczone w pliku XML musi być pojedynczy węzeł główny.

Powiązane problemy