Solr - _version_字段必须存在于模式中并且可以搜索

Teo*_*ahi 7 lucene solr

我对Solr很新,并且在设置我的第一个示例核心时遇到错误.我正在尝试在管理仪表板下添加新核心,但我收到有关版本字段的错误.

这有什么解决方法吗?

背景:

  • 操作系统:Windows
  • Solr文件夹:C:\ solr-6.0.0
  • 核心管理员URL:http:// localhost:8984/solr /#/〜核心
  • 为new_core创建的文件夹:C:\ solr-6.0.0\server\solr \new_core
  • 错误:错误CREATEing SolrCore"new_core":无法创建芯[new_core]所致:_version_字段必须存在于模式和被搜索(索引或docValues)和检索(存储或docValues),而不是多值(_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>
Run Code Online (Sandbox Code Playgroud)

屏幕截图:

在此输入图像描述

Ale*_*tch 7

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

将您的架构与Solr 6本身随附的基本示例架构进行比较。有很多区别:

  1. 模式版本现在最高为1.6(您是1.1)
  2. 类型字段不再需要外部标签,您只需按所需顺序列出类型/字段
  3. 不再建议使用 defaultSearchField和solrQueryParser ,应将其移至solrconfig.xml中的请求处理程序配置中

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

重新启动后是否出现错误?还是什么都没有。使用新的Solr,内核需要位于solr的主目录下(您似乎位于内核中),并且需要包含core.properties文件。如果在创建过程中出错,则可能尚未创建该文件,并且重新启动服务器可能始终不会注意到该集合/核心。只要确保每次测试更改时都重复相同的步骤(例如,创建/注册核心)。


muf*_*asa 5

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