创建/替换新字段类型时,只添加了一个标记生成器过滤器

时间:2015-08-07 21:35:17

标签: curl solr filter tokenize fieldtype

我正在使用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>

问题是实际上只添加了最后一个标记生成器过滤器。我真的不明白为什么会这样。我试图更改我的tokenizer类但仍然得到相同的结果。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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