2016-04-29 34 views
5

我对Solr非常新,并且在设置我的第一个示例核心时出现错误。我正在管理仪表板中添加新的核心,但我正在接收有关版本字段的错误。Solr - _version_字段必须存在于模式中并且可以搜索

有没有解决方法?

背景:

  • OS:WINDOWS
  • Solr的文件夹:C:\ Solr的-6.0.0
  • 核心管理URLhttp://localhost:8984/solr/#/~cores
  • 文件夹中创建了new_core:C:\ solr-6.0.0 \ server \ solr \ new_core
  • 错误:创建SolrCore'new_core'时出错:无法创建核心[new_core]由于:_version_字段必须存在于模式中,并且可以被搜索(索引或docValues)和可检索(存储或docValues),而不是multiValued(_version_是不存在)

XML模式:

<?xml version="1.0" encoding="UTF-8" ?> 

<!-- 
For fts-solr: 

This is the Solr schema file, place it into solr/conf/schema.xml. You may 
want to modify the tokenizers and filters. 
--> 
<schema name="dovecot" version="1.1"> 
    <types> 
    <!-- IMAP has 32bit unsigned ints but java ints are signed, so use longs --> 
    <fieldType name="string" class="solr.StrField" omitNorms="true"/>    
    <fieldType name="boolean" class="solr.BoolField" omitNorms="true"/> 
    <fieldType name="long" class="solr.LongField" omitNorms="true"/> 

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/>  
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/> 
     <filter class="solr.LowerCaseFilterFactory"/>   
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/>     
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> 
     <filter class="solr.LowerCaseFilterFactory"/>   
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     </analyzer> 
    </fieldType> 
</types> 


<fields> 
    <field name="_version_" type="long" indexed="true" stored="true" multiValued="false"/> 
    <field name="id" type="string" indexed="true" stored="true" required="true" />  
    <field name="box" type="string" indexed="true" stored="true" required="true" /> 
    <field name="user" type="string" indexed="true" stored="true" required="true" /> 
    <field name="ns" type="string" indexed="true" stored="true" required="false" /> 
    <field name="last_uid" type="boolean" indexed="true" stored="false" /> 
    <field name="hdr" type="text" indexed="true" stored="false" /> 
    <field name="body" type="text" indexed="true" stored="false" /> 
</fields> 

<uniqueKey>id</uniqueKey> 
<defaultSearchField>body</defaultSearchField> 
<solrQueryParser defaultOperator="AND" /> 
</schema> 

屏幕截图:

enter image description here

+0

你可以通过从_version _...中删除_进行检查吗?重新启动solr服务器后 –

+0

我刚刚尝试作为

回答

2

您的模式来自一个非常旧版本的Solr的示例。您需要使用该版本的Dovecot推荐的Solr版本,或将其调整为新的要求。

将您的模式与Solr 6自带的the basic example schema进行比较。有相当多的不同之处:现在

  1. 架构版本高达1.6(你是1.1)
  2. 类型字段都不再需要,在你刚列表类型/领域外标签任何命令你想
  3. defaultSearchField和solrQueryParser都被认为not recommended anymore,应该在solrconfig.xml中移动到请求处理程序配置

您的字段名称也应该_version_(带下划线)。有关删除这些建议是由于StackOverflow格式(将下划线转换为斜体)...

您是否在重新启动后出现错误?或者什么也没有。使用新的Solr时,内核需要位于Solr主页(您的似乎是),并且需要包含core.properties文件。如果在创建过程中遇到错误,那么该文件可能尚未创建,重新启动服务器可能无法注意到收集/核心。每次测试更改时,请确保您重复相同的步骤(例如创建/注册核心)。

2

我想添加一个解决方案,帮助我在这里; Solr复制你的配置文件并将其放在[core name]/conf/文件夹中,名称为managed-schema。确保在编辑模式文件后删除此文件,否则将不会检测到您的更改,因为Solr似乎使用该副本而不是原始schema.xml文件。

相关问题