简体   繁体   English

干草堆和Solr-Schema解析失败

[英]Haystack and Solr- Schema Parsing Failed

I'm trying to rebuild_index, but after building the schema ( manage.py build_solr_schema ) I copy and paste the output in the schema.xml file. 我正在尝试rebuild_index,但是在构建架构(manage.py build_solr_schema)之后,我将输出复制并粘贴到schema.xml文件中。 After restarting the server and rebuild_index ( manage.py rebuild_index ) I'm getting the below error. 重新启动服务器和rebuild_index(manage.py rebuild_index)后,出现以下错误。 I've been trying to get the problem, yet no success! 我一直在尝试解决问题,但没有成功! What I'm I missing? 我想念的是什么? Should I first delete the XML codes in the schema file before pasting the new one? 在粘贴新代码之前,我应该先删除架构文件中的XML代码吗?

  HTTP Status 500 - Severe errors in solr configuration. Check your log files for more detailed information on what may be wrong. If you want solr to continue after configuration errors, change: <abortOnConfigurationError>false</abortOnConfigurationError> in solr.xml -------------------------------------------------------------
  org.apache.solr.common.SolrException: No cores were created, please check the logs for  errors at org.apache.solr.core.CoreContainer$Initializer.initialize    (CoreContainer.java:172) at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96) at
  org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277) at   org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4649) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5305) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1582) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 
  ------------------------------------------------------------- org.apache.solr.common.SolrException: Schema Parsing Failed: Attribute name "omitN" associated with an element type "fieldtype" must be followed by the ' = ' character. at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:688) at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:123) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:481) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:335) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:219) at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:161) at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4649) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5305) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1582) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run (Unknown Source) Caused by: org.xml.sax.SAXParseException: Attribute name "omitN" associated with an element type "fieldtype" must be followed by the ' = ' character. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException  (Unknown Source) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError  (Unknown Source)   at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument  (Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) at org.apache.solr.core.Config.<init>(Config.java:159) at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:418) ... 24 more       ------------------------------------------------------------- org.xml.sax.SAXParseException: Attribute name "omitN" associated with an element type "fieldtype" must be followed by the ' = ' character. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException (Unknown Source) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError (Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError  (Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanAttribute(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) at org.apache.solr.core.Config.<init>(Config.java:159) at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:418) at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:123) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:481) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:335) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:219) at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:161) at org.apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java:96) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4649) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5305) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:899) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:875) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:650) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1582) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 

The Schema Output 模式输出

        <?xml version="1.0" ?>
        <!--
         Licensed to the Apache Software Foundation (ASF) under one or more
         contributor license agreements.  See the NOTICE file distributed with
         this work for additional information regarding copyright ownership.
         The ASF licenses this file to You under the Apache License, Version 2.0
         (the "License"); you may not use this file except in compliance with
         the License.  You may obtain a copy of the License at

           http://www.apache.org/licenses/LICENSE-2.0

          Unless required by applicable law or agreed to in writing, software
         distributed under the License is distributed on an "AS IS" BASIS,
         WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         See the License for the specific language governing permissions and
         limitations under the License.
         -->

         <schema name="default" version="1.4">
           <types>
            <fieldtype name="string"  class="solr.StrField" sortMissingLast="true"   omitNorms="true"/>
            <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
            <fieldtype name="binary" class="solr.BinaryField"/>

            <!-- Numeric field types that manipulate the value into
              a string value that isn't human-readable in its internal form,
             but with a lexicographic ordering the same as the numeric ordering,
             so that range queries work correctly. -->
           <fieldType name="int" class="solr.TrieIntField" precisionStep="0"     omitNorms="true" sortMissingLast="true" positionIncrementGap="0"/>
          <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" sortMissingLast="true" positionIncrementGap="0"/>
          <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" sortMissingLast="true" positionIncrementGap="0"/>
          <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" sortMissingLast="true" positionIncrementGap="0"/>

          <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
          <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
          <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
         <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>

         <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/>
        <!-- A Trie based date field for faster date range queries and date facetin. ->
       <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true"  precisionStep="6" positionIncrementGap="0"/>

       <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>
       <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
       <fieldtype name="geohash" class="solr.GeoHashField"/>

       <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
       <analyzer type="index">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"  enablePositionIncrements="true" />
       <!-- in this example, we will only use synonyms at query time
       <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
       <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
       <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignore Case="true" expand="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
     </fieldType>

     <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">

      <analyzer type="index">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords_en.txt"
            enablePositionIncrements="true"
            />
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.EnglishPossessiveFilterFactory"/>
      <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
      <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
      <filter class="solr.EnglishMinimalStemFilterFactory"/> -->
      <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
      <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
       <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="stopwords_en.txt"
            enablePositionIncrements="true"
            />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
        <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
      <filter class="solr.EnglishMinimalStemFilterFactory"/> -->
      <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
      </fieldType>

      <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">

      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      </analyzer>
     </fieldType>

     <fieldType name="ngram" class="solr.TextField" >
         <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="15"/>
    </analyzer>
    <analyzer type="query">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
     </fieldType>

     <fieldType name="edge_ngram" class="solr.TextField" positionIncrementGap="1">
     <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory" />
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1"  generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"  splitOnCaseChange="1"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front" />
    </analyzer>
    <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory" />
    <filter class="solr.LowerCaseFilterFactory" />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1"   generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"  splitOnCaseChange="1"/>
     </analyzer>
     </fieldType>
     </types>

     <fields>
      <!-- general -->
      <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
      <field name="django_ct" type="string" indexed="true" stored="true" multiValued="false"/>
      <field name="django_id" type="string" indexed="true" stored="true"  multiValued="false"/>

      <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
      <dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
      <dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
      <dynamicField name="*_t"  type="text_en"    indexed="true"  stored="true"/>
      <dynamicField name="*_b"  type="boolean" indexed="true"  stored="true"/>
      <dynamicField name="*_f"  type="float"  indexed="true"  stored="true"/>
      <dynamicField name="*_d"  type="double" indexed="true"  stored="true"/>
      <dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
      <dynamicField name="*_p" type="location" indexed="true" stored="true"/>
      <dynamicField name="*_coordinate"  type="tdouble" indexed="true"  stored="false"/>


      <field name="text" type="text_en" indexed="true" stored="true" multiValued="false" />

      <field name="price" type="text_en" indexed="true" stored="true" multiValued="false" />

      <field name="city_stay" type="text_en" indexed="true" stored="true" multiValued="false" />

      <field name="guideline" type="text_en" indexed="true" stored="true" multiValued="false" />

      <field name="state" type="text_en" indexed="true" stored="true"  multiValued="false" />

      <field name="address" type="text_en" indexed="true" stored="true"  multiValued="false" />

      <field name="pub_date" type="date" indexed="true" stored="true" multiValued="false" />

      </fields>

      <!-- field to use to determine and enforce document uniqueness. -->
      <uniqueKey>id</uniqueKey>

      <!-- field for the QueryParser to use when an explicit fieldname is absent -->

      <defaultSearchField>text</defaultSearchField>

      <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
      <solrQueryParser defaultOperator="AND"/>
      </schema>

Django Haystack only supports Solr 3.5+ Django Haystack仅支持Solr 3.5+

http://django-haystack.readthedocs.org/en/latest/backend_support.html#id1 http://django-haystack.readthedocs.org/en/latest/backend_support.html#id1

If you're using Solr 1.4, the schema format has changed between 1.4 and 3.5 如果您使用的是Solr 1.4,则架构格式已在1.4和3.5之间更改

I don't run Solr, hence can't test this, but a few problems jump out at me (more accurately, are flagged as errors when I try to prettyprint the XML :-) ) 我没有运行Solr,因此无法对此进行测试,但是一些问题突然出现了(更准确地说,当我尝试对XML进行漂亮打印时,它们被标记为错误:-))

  • line 40 ( <!-- A Trie based date field ... ) ends in -> ; 第40行( <!-- A Trie based date field ... )以->结尾; should be --> 应该是-->

  • line 59 ( <filter class="solr.SynonymFilterFactory" ... ) contains ignore Case="true" ; 第59行( <filter class="solr.SynonymFilterFactory" ... )包含ignore Case="true" ; should be ignoreCase="true" (no space in attr name) 应该为ignoreCase="true" (属性名称中不能有空格)

If you fix these errors, it will most likely solve your problem. 如果您解决了这些错误,则很可能会解决您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM