如何将Solrnet中的solr建议器与外部源位置集成?

时间:2012-09-14 13:10:55

标签: solr solrnet

我已经审核this链接并尝试实施并收到错误“错误请求”。 可能是什么原因? 或者是否有任何有助于实现它的教程?或
如何将Solrnet中的solr建议器与外部源位置集成?

这是SolrConfig.xml:

 <searchComponent class="solr.SpellCheckComponent" name="suggest">
<lst name="spellchecker">
  <str name="name">suggest</str>
  <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
  <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
  <!-- Alternatives to lookupImpl: 
       org.apache.solr.spelling.suggest.fst.FSTLookup   [finite state automaton]
       org.apache.solr.spelling.suggest.fst.WFSTLookupFactory [weighted finite state automaton]
       org.apache.solr.spelling.suggest.jaspell.JaspellLookup [default, jaspell-based]
       org.apache.solr.spelling.suggest.tst.TSTLookup   [ternary trees]
  -->
  <str name="field">Name</str>  <!-- the indexed field to derive suggestions from -->
  <str name="field">ManufacturerName</str>
  <str name="field">CategoryName</str>
  <str name="field">ShortDescription</str>
  <float name="threshold">0.005</float>
  <str name="buildOnCommit">true</str>
<bool name="exactMatchFirst">true</bool>
  <str name="sourceLocation">source.txt</str>

</lst>

              真正       建议       真正       五       真正                 建议        

这是代码:

private static ISolrOperations<SolrCustomProduct> solrCustomWorker;

ISolrQueryResults<SolrCustomProduct> results;

//Check connection instance invoked or not
if (solrCustomWorker == null)
{
    Startup.Init<SolrCustomProduct>(solrURL);
    solrCustomWorker = ServiceLocator.Current.GetInstance<ISolrOperations<SolrCustomProduct>>();
}

results = solrCustomWorker.Query("ac", new QueryOptions { SpellCheck = new SpellCheckingParameters { Collate=true}, });

这是Log:

    Sep 15, 2012 10:13:59 AM org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: undefined field text
    at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
    at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getAnalyzer(IndexSchema.java:408)
    at org.apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenStream(IndexSchema.java:383)
    at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:574)
    at org.apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser.java:206)
    at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1429)
    at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1317)
    at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1245)
    at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1234)
    at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:206)
    at org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:79)
    at org.apache.solr.search.QParser.getQuery(QParser.java:143)
    at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:105)
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:165)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Sep 15, 2012 10:13:59 AM org.apache.solr.core.SolrCore execute
INFO: [core-live] webapp=/solr path=/select params={spellcheck=true&q=ac&?=&spellcheck.collate=true&rows=100000000} status=400 QTime=1 
Sep 15, 2012 10:14:08 AM org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: undefined field text
    at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
    at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getAnalyzer(IndexSchema.java:408)
    at org.apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenStream(IndexSchema.java:383)
    at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:574)
    at org.apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser.java:206)
    at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1429)
    at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1317)
    at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1245)
    at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1234)
    at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:206)
    at org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:79)
    at org.apache.solr.search.QParser.getQuery(QParser.java:143)
    at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:105)
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:165)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Sep 15, 2012 10:14:08 AM org.apache.solr.core.SolrCore execute
INFO: [core-live] webapp=/solr path=/select params={spellcheck=true&q=ac&?=&spellcheck.collate=true&rows=100000000} status=400 QTime=1 
Sep 15, 2012 10:14:10 AM org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: undefined field text
    at org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1330)
    at org.apache.solr.schema.IndexSchema$SolrQueryAnalyzer.getAnalyzer(IndexSchema.java:408)
    at org.apache.solr.schema.IndexSchema$SolrIndexAnalyzer.reusableTokenStream(IndexSchema.java:383)
    at org.apache.lucene.queryParser.QueryParser.getFieldQuery(QueryParser.java:574)
    at org.apache.solr.search.SolrQueryParser.getFieldQuery(SolrQueryParser.java:206)
    at org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1429)
    at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1317)
    at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1245)
    at org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1234)
    at org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:206)
    at org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:79)
    at org.apache.solr.search.QParser.getQuery(QParser.java:143)
    at org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:105)
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:165)
    at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
    at org.apache.solr.core.SolrCore.execute(SolrCore.java:1376)
    at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:365)
    at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:260)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Sep 15, 2012 10:14:10 AM org.apache.solr.core.SolrCore execute
INFO: [core-live] webapp=/solr path=/select params={spellcheck=true&q=ac&?=&spellcheck.collate=true&rows=100000000} status=400 QTime=1

1 个答案:

答案 0 :(得分:1)

我相信您的配置中某处定义了text的默认搜索字段。最有可能在/select请求处理程序中,如下所示。请参阅<str name="df">text</str>条目。

<requestHandler name="/select" class="solr.SearchHandler">
  <!-- default values for query parameters can be specified, these
       will be overridden by parameters in the request
    -->
   <lst name="defaults">
     <str name="echoParams">explicit</str>
     <int name="rows">10</int>
     <str name="df">text</str>
   </lst>

   ....
</requestHandler> 

由于您没有在schema.xml中定义名为text的字段,因此您会看到此错误。最有可能的是,您之前没有看到此错误,b / c您要么指定要显式搜索的字段,要么使用不同的请求处理程序。但现在,当您搜索拼写检查程序时,它正在使用/select请求处理程序。

<str name="df">text</str>条目更新为您的架构的有效默认字段,或者将其完全删除,并指定要在查询中搜索的字段。有关Solr Wiki中df参数的更多信息。