我对Solr很新,并且在设置我的第一个示例核心时遇到错误.我正在尝试在管理仪表板下添加新核心,但我收到有关版本字段的错误.
这有什么解决方法吗?
背景:
架构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)
屏幕截图:
您的模式来自一个非常旧版本的Solr 的示例。您需要使用Dovecot版本推荐的Solr版本,或者将其调整为新的要求。
将您的架构与Solr 6本身随附的基本示例架构进行比较。有很多区别:
您的字段名称也应为_version_(带下划线)。关于删除这些内容的建议是由于StackOverflow格式(将下划线转换为斜体)引起的。
重新启动后是否出现错误?还是什么都没有。使用新的Solr,内核需要位于solr的主目录下(您似乎位于内核中),并且需要包含core.properties文件。如果在创建过程中出错,则可能尚未创建该文件,并且重新启动服务器可能始终不会注意到该集合/核心。只要确保每次测试更改时都重复相同的步骤(例如,创建/注册核心)。
我想添加一个对我有帮助的解决方案;Solr会复制您的配置文件,并将其放在[core name]/conf/名为的文件夹中managed-schema。确保在编辑模式文件后删除此文件,否则将不会检测到您的更改,因为Solr似乎使用的是副本而不是原始schema.xml文件。