2012-04-02 203 views
0

我遇到了一个我似乎无法过去的问题。每当我开始Solr的,我得到一个错误:SolrException未知字段类型

org.apache.solr.common.SolrException: Unknown fieldtype 'int_us' specified on field partId 
at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:501) 
at org.apache.solr.shcema.IndexSchema.<init>(IndexSchema.java:125) 
at org.apache.solr.core.CoreContainer.create(CoreContainer.java:461).... 

我Schema.xml文件看起来是这样的:

<schema name="parts" version 1.5> 
    <type> 
    <fieldType name="text_en_US" class="solr.TextField" sortMissingLast="true"> 
     <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory" /> 
     <filter class="solr.LowerCaseFilterFacroty" /> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrements="true" /> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" /> 
     <filter class="solr.SnowballPorterFilterFactory" language="English" /> 
     <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true" /> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory" /> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory" /> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt" enablePositionIncrements="true" /> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 
     <filter class="solr.LowerCaseFilterFactory" /> 
     <filter class="solr.SnowballPorterFilterFacroty" language="English" /> 
     </analyzer> 
    </fieldType> 
    <fieldType name="string_en_US" class="solr.StrField"></fieldType> 
    <fieldType name="int_us" class="solr.IntField"></fieldType> 
    </type> 
    <fields> 
    <field name="partId" type="int_us" indexed="false" stored="true" required="true" /> 
    <field name="partNumber" type="String_en_US" indexed="false" stored="true" required="true" /> 
    <field name="desc" type="text_en_US" indexed="true" stored="true" required="true" /> 
    <field name="usage" type="text_en_US" indexed="true" stored="true" required="true" /> 
    <field name="qty" type="String_en_US" indexed="false" stored="true" required="true" /> 
    <field name="make" type="String_en_US" indexed="true" stored="false" required="true" /> 
    <field name="year" type="int_us" indexed="true" stored="false" required="true" /> 
    </fields> 
</schema> 

我试图改变PARTID的字段类型,但我得到了同样的错误不有什么关系。 我正在使用在tomcat 7服务器上运行的solr 3.5。有谁知道我做错了什么?如果这些信息不够,请让我知道,我会发布更多信息。

回答

0

尝试改变<type><types>

+0

如果我们这样做,它会给出错误说:schema.xml:field id:missing强制属性“类型” – 2016-05-18 08:56:59

+0

我的答案是从2012年开始的,所以你显然正在使用更新版本的solr https://wiki.apache.org/solr/SchemaXml – 2016-05-24 20:36:59

1

不知道它的计算器格式,但张贴的模式是无效的XML

<schema name="parts" version 1.5>

应该

<schema name="parts" version="1.5">

+0

感谢您的回复,但在我的schema.xml中正确 – stirling 2012-04-02 17:11:07

+0

我发现问题,这是一个错字。我有class =“solr.phoneticFilter ...”而不是class =“solr.PhoneticFilter ..”对不起,因为在我发布前没有捕获到这个。 – stirling 2012-04-02 20:08:49

0

我得到了相同的问题与Solr 4.6当我使用

<field name="_version_" type="long" indexed="true" stored="true" /> 

只有对<types>的根元素更正有助于解决此问题。 这是第一个答案。