我想从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
)
答案 0 :(得分:2)
此NullPointerException是Lucene中的错误,请report it。 Lucene不应抛出这样的通用NullPointerException,而不需要任何其他信息来帮助用户找到原因。考虑提交补丁。
那就是说,你不应该向Solr传递一个空查询。如果您只想要术语信息,请使用SolrQuery.All
代替0行。
还要确保在默认的Solr请求处理程序中正确配置了TermsComponent。