2

我正在尝试rebuild_index,但是在构建架构(manage.py build_solr_schema)之后,我将输出复制并粘贴到schema.xml 文件中。重新启动服务器和rebuild_index(manage.py rebuild_index)后,我收到以下错误。我一直在尝试解决问题,但没有成功!我错过了什么?在粘贴新的之前,我应该先删除架构文件中的 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) 

模式输出

        <?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>
4

2 回答 2

1

Django Haystack 仅支持 Solr 3.5+

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

如果您使用 Solr 1.4,架构格式在 1.4 和 3.5 之间发生了变化

于 2012-06-24T22:25:55.513 回答
-1

我没有运行 Solr,因此无法对此进行测试,但是我突然出现了一些问题(更准确地说,当我尝试漂亮打印 XML 时被标记为错误 :-))

  • 第 40 行 ( <!-- A Trie based date field ...) 以->; 应该-->

  • 第 59 行 ( <filter class="solr.SynonymFilterFactory" ...) 包含ignore Case="true"; 应该是ignoreCase="true"(attr 名称中没有空格)

如果您修复了这些错误,它很可能会解决您的问题。

于 2012-06-23T23:37:55.107 回答