SORLJ未定义字段为空

时间:2010-02-04 17:08:04

标签: solr

我试图通过使用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)

2 个答案:

答案 0 :(得分:1)

好吧,我似乎需要在schema.xml中将字段“nombre”指定为uniqueKey和defaultSearchField。它开始起作用了。

答案 1 :(得分:1)

在你的q参数中有一个错误的查询字符串,应该是*:*而不仅是*。您正在获得该异常,因为SOLR正在尝试解析目标字段的名称,首先尝试使用声明的字段,然后查找动态字段定义。