Добавляется только один фильтр токенизатора при создании/замене нового типа поля

Я добавляю свой тип поля с помощью Curl:

curl -X POST -H 'Content-type:application/json' --data-binary '{
    "add-field-type" :  {
        "name":"valueWithSubFields",
        "class":"solr.TextField",
        "positionIncrementGap":"100",
        "indexAnalyzer":{
            "tokenizer": { "class":"solr.KeywordTokenizerFactory" },
            "filters": [{ "class":"solr.LowerCaseFilterFactory"}],
            "filters": [{ "class":"solr.ASCIIFoldingFilterFactory" }],  
            "filters": [{ "class":"solr.ReversedWildcardFilterFactory" }]           
        },
        "queryAnalyzer": {
            "tokenizer": { "class":"solr.KeywordTokenizerFactory" },
            "filters": [{ "class":"solr.LowerCaseFilterFactory" }],
            "filters": [{ "class":"solr.ASCIIFoldingFilterFactory" }]
        }
    }
}' http://localhost:8983/solr/myMainCore/schema

вот мой созданный тип поля

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

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

Любая помощь будет оценена.


person Vin    schedule 07.08.2015    source источник


Ответы (1)


Массив фильтров должен быть таким

"filters": [
              {
                 "class":"solr.LowerCaseFilterFactory"
              },
              {
                 "class":"solr.ASCIIFoldingFilterFactory"
              },
              {
                 "class":"solr.ReversedWildcardFilterFactory"
              }
          ],

и полная команда curl будет

curl -X POST -H 'Content-type:application/json' --data-binary '{
    "add-field-type" :  {
        "name":"valueWithSubFields",
        "class":"solr.TextField",
        "positionIncrementGap":"100",
        "indexAnalyzer":{
            "tokenizer": { "class":"solr.KeywordTokenizerFactory" },
            "filters": [
                    {
                        "class":"solr.LowerCaseFilterFactory"
                    },
                    {
                        "class":"solr.ASCIIFoldingFilterFactory"
                    },
                    {
                        "class":"solr.ReversedWildcardFilterFactory"
                    }
                ]           
        },
        "queryAnalyzer": {
            "tokenizer": { "class":"solr.KeywordTokenizerFactory" },
            "filters": [
                    {
                        "class":"solr.LowerCaseFilterFactory"
                    },
                    {
                        "class":"solr.ASCIIFoldingFilterFactory"
                    }
                ]
        }
    }
}' http://localhost:8983/solr/myMainCore/schema
person Abhijit Bashetti    schedule 08.08.2015