2015-08-07 2 views
1

Я добавляю свой тип поля с помощью 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> 

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

Любая помощь будет принята с благодарностью.

ответ

1

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

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

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

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

Привет Abhijit, Это решает мою проблему. Большое спасибо!!! – Vin