我试图通过使用SolrJ对Lucene索引进行简单的读数。我已经能够访问SolrJ下载中提供的示例索引,但在尝试进行读取时出现异常。
04-feb-2010 17:05:05 org.apache.solr.common.SolrException log
GRAVE: org.apache.solr.common.SolrException: undefined field null
我的索引只有一个带有单个字段的文档,名为“nombre”
我在schema.xml和slconfig.xml中的路由
中指定了这个Java代码
System.setProperty( "solr.solr.home", "C:\\solr" );
// CREATING THE SERVER
CoreContainer.Initializer initializer = new CoreContainer.Initializer();
CoreContainer coreContainer = null;
SolrServer embServer = null;
coreContainer = initializer.initialize();
embServer = new EmbeddedSolrServer(coreContainer, "");
// READING
SolrQuery query = new SolrQuery();
String q = "*";
query.setQuery(q);
QueryResponse rsp = null;
/// HERE I GET THE EXCEPTION ///
rsp = embServer.query( query );
/// HERE I GET THE EXCEPTION ///
// GETTING THE NUMBER OF ITEMS
SolrDocumentList docs = rsp.getResults();
System.out.println( docs.size() );
有什么想法吗?你能给我一个解决方案吗?这是一个常见的错误吗?非常感谢你提前。
如果我尝试使用Jetty管理控制台,我会得到: (网址:“http://localhost:8983/solr/select/?q= *”)
HTTP错误:400
undefined field null
RequestURI = / solr的/选择/
shema.xml就是这个:
(请记住,我的索引只有一个带有单个字段的文档,称为“nombre”)
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.2">
<types>
<fieldType name="string" class="solr.StrField"/>
</types>
<fields>
<field name="nombre" type="string" indexed="true" stored="true"/>
</fields>
</schema>
solrconfig.xml就是这个:
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<requestHandler name="standard" class="solr.StandardRequestHandler" />
<dataDir>${solr.data.dir:./data/clientes}</dataDir>
</config>
我得到的例外是:
05-feb-2010 10:07:11 org.apache.solr.common.SolrException log GRAVE:org.apache.solr.common.SolrException:undefined field null 在org.apache.solr.schema.IndexSchema.getDynamicFieldType(IndexSchema.java:1136) at org.apache.solr.schema.IndexSchema.getFieldType(IndexSchema.java:1098) 在org.apache.solr.search.SolrQueryParser.getWildcardQuery(SolrQueryParser.java:193) 在org.apache.lucene.queryParser.QueryParser.Term(QueryParser.java:1434) 在org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:1337) 在org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:1265) 在org.apache.lucene.queryParser.QueryParser.TopLevelQuery(QueryParser.java:1254) 在org.apache.lucene.queryParser.QueryParser.parse(QueryParser.java:200) 在org.apache.solr.search.LuceneQParser.parse(LuceneQParserPlugin.java:78) 在org.apache.solr.search.QParser.getQuery(QParser.java:131) 在org.apache.solr.handler.component.QueryComponent.prepare(QueryComponent.java:89) at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:174) 在org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131) 在org.apache.solr.core.SolrCore.execute(SolrCore.java:1316) at org.apache.solr.client.solrj.embedded.EmbeddedSolrServer.request(EmbeddedSolrServer.java:139) 在org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:89) 在org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:118) at paqueteBase.PruebaDeSolr.ejecutate(PruebaDeSolr.java:67) at paqueteBase.PruebaDeSolr.main(PruebaDeSolr.java:24)
答案 0 :(得分:1)
好吧,我似乎需要在schema.xml中将字段“nombre”指定为uniqueKey和defaultSearchField。它开始起作用了。
答案 1 :(得分:1)
在你的q参数中有一个错误的查询字符串,应该是*:*而不仅是*。您正在获得该异常,因为SOLR正在尝试解析目标字段的名称,首先尝试使用声明的字段,然后查找动态字段定义。