从SolrNet获取条款信息

时间:2012-03-31 20:20:11

标签: solrnet

我想从SolrNet获取此查询返回的信息:

http://localhost:8983/solr/terms?terms.fl=Title&terms.sort=index&terms.limit=10000&terms.mincount=10&version=2.2

Solr支持指定术语参数,但我不知道如何检索术语信息。执行查询将转到select查询处理程序,该处理程序将引发错误。以下是我到目前为止的情况:

var solr = ServiceLocator.Current.GetInstance<ISolrOperations<ProductAdvertisementWidget>>();
int termLimit = 10000;
int minCount = 10;
var termParameters = new TermsParameters("Title");
termParameters.MinCount = minCount;
termParameters.Limit = termLimit;
termParameters.Sort = TermsSort.Index;            
var options = new QueryOptions()
      {
      Terms = termParameters,
      Rows = 0
      };

var queryOptions = new QueryOptions();
queryOptions.Terms = termParameters;
int lastResultCount = termLimit;

IEnumerable<KeyValuePair<string, int>> terms =
    solr.Query(new SolrQuery(""), options).Terms.FirstOrDefault(
    x=>x.Field == SolrFieldMappings.Name).Terms; 

SolrNet将其转换为此查询,但失败了:

http://localhost:8983/solr/select?q=&terms.fl=Title&terms.sort=index&terms.limit=10000&terms.mincount=10&version=2.2

错误消息是:

  

HTTP ERROR 500

     

访问/ solr / select时出现问题。原因是:

null
     

java.io.StringReader中的java.lang.NullPointerException。(未知   来源)at   org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:203)     在   org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:80)     在org.apache.solr.search.QParser.getQuery(QParser.java:142)at   org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:81)     在   org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:173)     在   org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)     在org.apache.solr.core.SolrCore.execute(SolrCore.java:1368)at at   org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)     在   org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)     在   org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1212)     在   org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)     在   org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)     在   org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)     在   org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)     在   org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)     在   org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)     在   org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)     在   org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)     在org.mortbay.jetty.Server.handle(Server.java:326)处   org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)     在   org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:928)     在org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)at   org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)at at   org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)at at   org.mortbay.jetty.bio.SocketConnector $ Connection.run(SocketConnector.java:228)     在   org.mortbay.thread.QueuedThreadPool $ PoolThread.run(QueuedThreadPool.java:582

1 个答案:

答案 0 :(得分:2)

此NullPointerException是Lucene中的错误,请report it。 Lucene不应抛出这样的通用NullPointerException,而不需要任何其他信息来帮助用户找到原因。考虑提交补丁。

那就是说,你不应该向Solr传递一个空查询。如果您只想要术语信息,请使用SolrQuery.All代替0行。

还要确保在默认的Solr请求处理程序中正确配置了TermsComponent