Я нашел способ, используя SolrJ.
SolrQuery query = new SolrQuery();
query.setQuery( "whatever_by_id" );
QueryResponse rsp;
rsp = server.query(query);
Iterator<SolrDocument> iter = rsp.getResults().iterator();
while (iter.hasNext()) {
SolrDocument resultDoc = iter.next();
String id = (String) resultDoc.getFieldValue("oid"); //id is the uniqueKey field
SolrInputDocument inputdoc = new SolrInputDocument() ;
for( Map.Entry<String, Object> f : resultDoc.entrySet()) {
inputdoc.setField(f.getKey(), f.getValue()) ;
}
server.deleteById(id) ;
server.commit() ;
Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
docs.add(inputdoc) ;
server.add(docs) ;
server.commit() ;
}
Когда мы добавляем «новый» inputdoc (копию старого resultDoc), он использует новый анализатор, который мы изменили в схеме для индексации. Это не очень элегантно, но работает.