2015-04-02 55 views
0

我已經安裝了solr 4.9.1。 這是我的schema.xmlSolrException:未定義字段文本

<?xml version="1.0" encoding="UTF-8" ?> 
<schema name="ayan_schema" version="1.5"> 
    <types> 
     <fieldType name="string" class="solr.StrField" /> 
     <fieldType name="long" class="solr.TrieLongField" 
      precisionStep="0" positionIncrementGap="0" /> 
     <fieldType name="text" class="solr.TextField"> 
      <analyzer> 
       <tokenizer class="solr.StandardTokenizerFactory" /> 
      </analyzer> 
     </fieldType> 
     <fieldtype name="syn" class="solr.TextField"> 
      <analyzer> 
       <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" 
        ignoreCase="true" expand="false" /> 
      </analyzer> 
     </fieldtype> 
    </types> 
    <fields> 
     <field name="_version_" type="long" indexed="true" stored="true" /> 
     <field name="id" type="string" indexed="true" stored="true" /> 
     <field name="name" type="string" indexed="true" stored="true" /> 
     <field name="email" type="string" indexed="true" stored="true" /> 
     <field name="skype" type="string" indexed="true" stored="true" /> 
     <field name="irc" type="string" indexed="true" stored="true" /> 
     <field name="twitter" type="string" indexed="true" stored="true" /> 
     <field name="syn_val" type="syn" indexed="true" stored="true" /> 
     <field name="all" type="string" docValues="true" indexed="true" 
      stored="true" multiValued="true" /> 
    </fields> 
    <defaultSearchField>name</defaultSearchField> 
    <uniqueKey>id</uniqueKey> 
    <copyField source="id" dest="all" /> 
    <copyField source="email" dest="all" /> 
    <copyField source="skype" dest="all" /> 
    <copyField source="irc" dest="all" /> 
    <copyField source="twitter" dest="all" /> 
</schema> 

當我搜索使用名稱字段我得到以下異常:

org.apache.solr.common.SolrException: undefined field text 
    at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1267) 
    at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getWrappedAnalyzer(IndexSchema.java:433) 
    at org.apache.lucene.analysis.AnalyzerWrapper.initReader(AnalyzerWrapper.java:117) 
    at org.apache.lucene.analysis.Analyzer.tokenStream(Analyzer.java:178) 
    at org.apache.lucene.util.QueryBuilder.createFieldQuery(QueryBuilder.java:207) 
    at org.apache.solr.parser.SolrQueryParserBase.newFieldQuery(SolrQueryParserBase.java:375) 
    at org.apache.solr.parser.SolrQueryParserBase.getFieldQuery(SolrQueryParserBase.java:743) 
    at org.apache.solr.parser.SolrQueryParserBase.handleBareTokenQuery(SolrQueryParserBase.java:542) 
    at org.apache.solr.parser.QueryParser.Term(QueryParser.java:299) 
    at org.apache.solr.parser.QueryParser.Clause(QueryParser.java:185) 
    at org.apache.solr.parser.QueryParser.Query(QueryParser.java:107) 
    at org.apache.solr.parser.QueryParser.TopLevelQuery(QueryParser.java:96) 
    at org.apache.solr.parser.SolrQueryParserBase.parse(SolrQueryParserBase.java:152) 
    at org.apache.solr.search.LuceneQParser.parse(LuceneQParser.java:50) 
    at org.apache.solr.search.QParser.getQuery(QParser.java:141) 
    at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:148) 
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:197) 
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) 
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1962) 
    at org.apache.solr.core.QuerySenderListener.newSearcher(QuerySenderListener.java:64) 
    at org.apache.solr.core.SolrCore$5.call(SolrCore.java:1734) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

我無法找出錯誤,我doing.When我使用搜索除了名稱之外的任何字段我都可以正確搜索。 查詢是:

http://localhost:8983/solr/collection1/select?q=name%3Adennis+l*&fl=*%2Cscore&wt=json&indent=true 

回答

4

錯誤消息說「未定義字段文本」。這意味着搜索正在名爲text的字段上執行。你能否在這裏粘貼查詢參數來查看哪些請求參數是什麼以及是什麼導致了這個問題。

+0

請參閱編輯 – 2015-04-02 01:32:17

+4

看起來您正在使用與solr捆綁在一起的名爲collection1的默認內核。捆綁的solrconfig.xml具有「df」參數的默認設置,該參數指定要搜索的字段。請將其更改爲您的字段名稱(「all」)或在搜索查詢中設置df參數http:// localhost:8983/solr/collection1/select?q = name%3Adennis + l *&fl = *%2Cscore&wt = json&indent = true &df = name) – 2015-04-02 04:43:18

+0

是用於覆蓋默認搜索字段的df參數嗎? – 2015-04-02 06:19:33

1

編輯您的查詢,添加另一個參數debugQuery =真

這樣你會看到,在響應的專用部分,Solr的我怎麼terprets您的查詢,哪裏是你想要的東西之間的誤會Solr有效地做什麼