我在Glassfish上配置了solr服务器,一切运行良好。问题是当我尝试在我的Java应用程序中使用Solrj进行reindex调用时。
我通过完全导入使用delta导入,但它在Solrj之外运行良好,所以我认为没有问题
http://wiki.apache.org/solr/DataImportHandlerDeltaQueryViaFullImport
当我打电话
http://localhost:8787/solr-4.2.1/db/dataimport?command=full-import&clean=true
然后reindex是正确的,我看到了我的新结果。当我使用Solrj
时,问题就出现了 SolrServer solr = new HttpSolrServer("http://localhost:8787/solr-4.2.1/db");
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("qt", "/dataimport");
params.set("command", "full-import&clean=true");
QueryResponse response = null;
try {
response = solr.query(params);
} catch (SolrServerException e1) {
e1.printStackTrace();
}
System.out.println(response);
resposne似乎没问题
{responseHeader={status=0,QTime=0},initArgs={defaults={config=db-data-config.xml}},command=full-import&clean=true,status=idle,importResponse=,statusMessages={Total Requests made to DataSource=4, Total Rows Fetched=5, Total Documents Skipped=0, Full Dump Started=2013-07-09 09:42:34, =Indexing completed. Added/Updated: 5 documents. Deleted 0 documents., Committed=2013-07-09 09:42:35, Total Documents Processed=5, Time taken=0:0:0.390},WARNING=This response format is experimental. It is likely to change in the future.}
所有信息都是正确的 - 它应该向数据库发出4个请求并继续进行所有5行索引。但是当我查看索引数据时(使用URL或Solrj)
http://localhost:8787/solr-4.2.1/db/search/?q=*:*
我看到还有旧索引。例如,我在数据库中更改了一行,使用Solrj调用了reindex,我看到索引没有变化。当我调用URL命令
时http://localhost:8787/solr-4.2.1/db/dataimport?command=full-import&clean=true
reindex正确运行,我在Solr中看到更改的值(使用URL或Solrj)。我试图将solr.commit()添加到我的代码中,但它没有帮助。我究竟做错了什么?为什么我看到没有使用Solrj的更改,但使用URL一切正常?
答案 0 :(得分:2)
您可以检查的事项很少 -
params.set("command", "full-import");
clean=true
添加为单独的参数commit=true
作为参数传递以提交文档。