由於Solr的允許交易/提交你其實可以對其進行索引和之前你提交你說出一個刪除查詢其刪除所有不匹配的文件。
/**
* @author Omnaest
*/
public class SolrSimpleIndexingTest
{
protected SolrServer solrServer = newSolrServerInstance();
@Test
public void testSolr() throws IOException,
SolrServerException
{
{
SolrInputDocument solrInputDocument = new SolrInputDocument();
{
solrInputDocument.addField("id", "0");
solrInputDocument.addField("text", "test1");
}
this.solrServer.add(solrInputDocument);
}
{
SolrInputDocument solrInputDocument = new SolrInputDocument();
{
solrInputDocument.addField("id", "1");
solrInputDocument.addField("text", "test2");
}
this.solrServer.add(solrInputDocument);
}
this.solrServer.deleteByQuery("text:([* TO *] -test2)");
this.solrServer.commit();
/*
* Now your index does only contain the document with id=1 !!
*/
QueryResponse queryResponse = this.solrServer.query(new SolrQuery().setQuery("*:*"));
SolrDocumentList solrDocumentList = queryResponse.getResults();
assertEquals(1, solrDocumentList.size());
assertEquals("1", solrDocumentList.get(0).getFieldValue("id"));
}
/**
* @return
*/
private static CommonsHttpSolrServer newSolrServerInstance()
{
try
{
return new CommonsHttpSolrServer("http://localhost:8983/solr");
}
catch (MalformedURLException e)
{
e.printStackTrace();
fail();
}
return null;
}
}