开发者

Deleting index from Solr using solrj as a client

I am using solrj as client for indexing documents on the solr server.

I am having problem while deleting the indexes by 'id' from the solr server. I am using following code to delete the indexes:

server.deleteById("id:20");
server.commit(true,true);

After this when 开发者_JAVA技巧i again search for the documents, the search result contains the above document also. Dont know what is going wrong with this code. Please help me out with issue.

Thanks!


When you call deleteById, just use the id, without query syntax:

server.deleteById("20");
server.commit();


After you delete the document, commit the server and add the following lines. After the server commit line.

  UpdateRequest req = new UpdateRequest();
  req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
  req.add( docs );
  UpdateResponse rsp = req.process( server );


Use the method deleteByQuery() to delete the documents matching the query:

server.deleteByQuery("id:20");
server.commit();


So the deleteById will work only if you are forming your key using only one attribute. So, I had case where the id was a combination of multiple attributes like employeeId+deptId. But, my table had employeeId & deptId as separate columns as well with indexes created on it. So when I wanted to delete a record I had only the employeeId and not deptId. I used the curl command to delete where you can specify the column and its value and it will delete the entire record.

E.g. curl http://localhost:8983/solr/update --data ':' -H 'Content-type:text/xml; charset=utf-8'

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜