Как Solr fieldTypes могут быть разделены между несколькими ядрами? - PullRequest
5 голосов
/ 08 февраля 2012

Возможно ли разделить Solr fieldType s, определенный в schema.xml, между несколькими ядрами?

У меня есть несколько ядер в Solr, и я заново определяю fieldType s, которые основаны только на встроенных фильтрах и токенизаторах. например,

<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>

Я знаю, что могу написать свой собственный класс Field и поделиться им между ядрами, но глупо создавать зависимость от пользовательского кода, когда пользовательский код настраивает только стандартные фильтры. Есть ли лучший способ?

Обратите внимание, что приведенный выше пример прост по сравнению с некоторыми другими (которые настраивают стоп-слова и преобразования символов и т. Д.).

Ответы [ 2 ]

2 голосов
/ 10 июня 2014

Совместное использование fieldType как «общие» определения в schema.xml, solrconfig.xml для нескольких ядер возможно с помощью 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>

И используйте его в своем schema.xml, как показано ниже:

<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>

Примечание: включенный файл XML должен быть одним корневым узлом.

1 голос
/ 08 февраля 2012

Я не знаю способа совместного использования fieldTypes между ядрами.Однако, если все ваши ядра имеют одинаковую схему (например, одни и те же поля и fieldTypes), вы можете поделиться этим между несколькими ядрами, и вам нужно будет обновить схему только в одном месте.Пожалуйста, смотрите это сообщение в списке рассылки пользователей Solr: Схема совместного использования с несколькими ядрами для получения подробной информации о настройке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...