Solr - _version_ 字段必须存在于架构中并且可搜索

标签 solr lucene

我对 Solr 还很陌生,在设置我的第一个示例核心时遇到错误。我正在尝试在管理仪表板下添加新核心,但收到有关 version 字段的错误。

有什么解决办法吗?

背景:

  • 操作系统:Windows
  • Solr 文件夹:C:\solr-6.0.0
  • 核心管理网址:http://localhost:8984/solr/#/~cores
  • 为 new_core 创建的文件夹:C:\solr-6.0.0\server\solr\new_core
  • 错误:创建 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>

屏幕截图:

enter image description here

最佳答案

您的架构来自非常旧版本 Solr 的示例。您需要使用该版本的 Dovecot 推荐的 Solr 版本,或者根据新的要求进行调整。

将您的架构与 the basic example schema 进行比较Solr 6 本身附带的。有很多差异:

  1. 架构版本现已高达 1.6(您的是 1.1)
  2. 不再需要类型字段外部标签,您只需按您想要的任何顺序列出类型/字段
  3. defaultSearchField 和 solrQueryParser 均被视为 not recommended anymore并应移至 solrconfig.xml 中的请求处理程序配置中

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

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

关于Solr - _version_ 字段必须存在于架构中并且可搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36942477/

相关文章:

ubuntu - 无法让 Solr 4.8 与 Tomcat 7 和 Ubuntu 12.04 一起工作

solr - 使用 API 更改 SolrCloud 中的默认查询字段

join - 在 SOLR 中选择连接表字段

xml - Solr 或 Lucene 可以用于搜索 XML 吗?

hadoop - hbase-indexer solr numFound 与 hbase 表行大小不同

mysql - 仅 Solr 与 Solr/MySQL 解决方案

java - Android 应用程序中的 PorterStemmer 错误

php - Zend_Search_Lucene 与 SOLR

java - 自定义停用词 Lucene 4.0

lucene - JCR-SQL - 包含函数不会转义特殊字符?