Синтаксис фабрики фильтров Solr не работает - PullRequest
0 голосов
/ 08 ноября 2011

Поэтому я пытаюсь создать в своей схеме Solr настраиваемое поле, которое фильтруется и обрабатывается определенным образом, но, похоже, оно не работает.

    <fieldType name="removeWhitespace" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.TrimFilterFactory" />
            <filter class="solr.PatternReplaceFilterFactory" pattern="\s" replacement="" replace="all" />
        </analyzer>
    </fieldType>

<field name="whiteSpaceRmved" type="removeWhitespace" stored="true" indexed="true"/>
<copyField source="original" dest="whiteSpaceRmved"/>

Как правило, если у меня есть поле типа,

Hello World

Я хочу получить это поле и новое имя поля, которое выглядит как

HelloWorld

Но когда я пытаюсь это сделать, он копирует поле, но никак не меняет его. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2011

Вы должны использовать KeywordTokenizer, который не выполняет токенизацию, поэтому вся входная строка сохраняется как один токен

<fieldType name="removeWhitespace" class="solr.TextField" sortMissingLast="true" omitNorms="true">
  <analyzer>
     <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.TrimFilterFactory" />
    <filter class="solr.PatternReplaceFilterFactory"
            pattern="(\s)" replacement="" replace="all"
    />
  </analyzer>
</fieldType>
0 голосов
/ 08 ноября 2011

Вам нужно переместить токенизатор <tokenizer class="solr.StandardTokenizerFactory" /> в конец цепочки вашего анализатора. В настоящее время он разбивает значения полей на токены перед удалением пробелов. И на самом деле, поскольку вы удаляете пробелы, вам может даже не потребоваться токенайзер, поскольку похоже, что вы действительно хотите хранить значения в виде строк.

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