2016-04-29 32 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文件。

相關問題