2012-06-23 360 views
2

我正在嘗試rebuild_index,但在構建模式(manage.py build_solr_schema)後,我將輸出複製並粘貼到schema.xml文件中。重新啓動服務器和rebuild_index(manage.py rebuild_index)後,我得到以下錯誤。我一直在試圖解決問題,但沒有成功!我錯過了什麼?在粘貼新文件之前,我應該先刪除模式文件中的XML代碼嗎?Haystack和Solr-模式解析失敗

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> 

回答

-1

我不跑Solr的,因此不能對此進行測試,但有幾個問題我跳出(更準確地,被標記爲錯誤,當我嘗試到prettyprint的XML :-))

  • 線40(<!-- A Trie based date field ...)在->結束;應該是-->

  • line 59(<filter class="solr.SynonymFilterFactory" ...)contains ignore Case="true";應該ignoreCase="true"(在ATTR名無空格)

如果您修復這些錯誤,它很可能會解決您的問題。

+0

謝謝...會嘗試之間變化。我已經轉換爲whoosh並且正在工作。不知道爲什麼Solr讓我頭疼。 – picomon