2015-04-02 49 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有效地做什么