【问题标题】:Get Terms information from SolrNet从 SolrNet 获取条款信息
【发布时间】:2012-03-31 20:20:11
【问题描述】:

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

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

Solr 支持指定术语参数,但我不知道如何检索术语信息。执行查询转到选择查询处理程序,这会引发错误。这是我目前所拥有的:

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 错误 500

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

null

java.io.StringReader 处的 java.lang.NullPointerException。(未知 来源)在 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) 在 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) 在 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) 在 org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 在 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 在 org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) 在 org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582

)

【问题讨论】:

  • 请发布错误信息。

标签: solrnet


【解决方案1】:

此 NullPointerException 是 Lucene 中的一个错误,请report it。 Lucene 不应该在没有任何其他信息帮助用户找到原因的情况下抛出这样一个通用的 NullPointerException。考虑提交补丁。

也就是说,您不应该将空查询传递给 Solr。如果您只需要条款信息,请改用 0 行的 SolrQuery.All

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

【讨论】:

  • 感谢您的跟进。指定 SolrQuery.All 不会引发任何错误,但响应中不包含术语信息。有关确保正确配置条款组件的任何指示?我可以在查询 /solr/terms 时检索术语信息,但在查询 /solr/select 时无法检索。问题中给出的术语查询 URL 可以正常工作。这是返回没有任何条款信息的响应的 SolrQuery.All URL:localhost:8983/solr/select?q=*%3a*&rows=0&terms=true&terms.fl=Title&terms.sort=index&terms.limit=10000&terms.mincount=10&version=2.2
  • @jmacinnes :确切地说:您必须将 TermsComponent 添加到您的 default 请求处理程序中。检查你的 solrconfig.xml。
  • 在很久以后才出现,现在很简单: var facet = new SolrFacetFieldQuery(termField) { MinCount = minCount, Limit = termLimit, Sort = sortByCount }; return _solr.FacetFieldQuery(facet);
猜你喜欢
  • 1970-01-01
  • 2015-04-24
  • 1970-01-01
  • 2011-06-07
  • 2011-08-20
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
相关资源
最近更新 更多