I'm using SolrCrudRepository for all CRUD Operations. It should save and commit upon calling SolrCrudRepository's save() method but that is not what it's doing. I need to use SolrTemplate's commit() method to completely save (e.g save & commit) the document. If I remove the line solrTemplateThree.getSolrServer().commit()
then it will not commit. Therefore I am unable to query the data (need to reload the core directly from solr admin page then query). Any pointers or comments on possible causes will be welcomed.
What other alternatives besides SolrCrudRepository is available to save/delete solr indexes?
@Service("solrDocumentService")
@Repository
public class SolrDocumentServiceImpl implements SolrDocumentService{
private static final Logger logger = LoggerFactory.getLogger(SolrDocumentServiceImpl.class);
@Autowired @Qualifier("solrTemplateThree")
private SolrTemplate solrTemplateThree;
@Override
public SolrDocument save(SolrDocument solrDoc) {
SolrDocument saved = solrDocumentRepository().save(solrDoc);
try {
solrTemplateThree.getSolrServer().commit();
} catch (SolrServerException e) {
logger.info(e.getMessage());
} catch (IOException e) {
logger.info(e.getMessage());
}
return saved;
}
private SolrDocumentRepository solrDocumentRepository(){
return new SolrRepositoryFactory(solrTemplateThree).getRepository(SolrDocumentRepository.class);
}
}
Config Class
@Configuration
@EnableSolrRepositories("repository")
@ComponentScan(basePackages={"..."})
//@Profile("production")
@PropertySource("classpath:solr.properties")
public class HttpSolrConfig {
@Autowired
private Environment environment;
@Bean
public HttpSolrServerFactoryBean solrServerFactoryBeanAutocomplete() {
HttpSolrServerFactoryBean factory = new HttpSolrServerFactoryBean();
factory.setUrl(environment.getRequiredProperty("solr.server.core.three.url"));
return factory;
}
@Bean
public SolrTemplate solrTemplateThree() throws Exception {
return new SolrTemplate(solrServerFactoryBeanAutocomplete().getObject());
}
@Bean
public SolrTemplate solrTemplate() throws Exception {
return new SolrTemplate(solrServerFactoryBeanUsers().getObject());
}
}