He estado buscando mucho para ver cómo usar MongoDB en combinación con Solr, y algunas preguntas aquí tienen respuestas parciales, pero nada realmente concreto (más como teorías). En mi aplicación, tendré muchos y muchos documentos almacenados en MongoDB (tal vez hasta unos cientos de millones), y quiero implementar búsquedas de texto completo en algunas propiedades de esos documentos, así que supongo que Solr es la mejor manera de hacerlo esta.java - Funcionamientos de MongoDB + Solr
Lo que quiero saber es cómo debo configurar/ejecutar todo para que tenga un buen rendimiento? en este momento, esto es lo que hago (y yo se que no es óptimo):
1- Al insertar un objeto en MongoDB, que después añadirlo al Solr
SolrServer server = getServer();
SolrInputDocument document = new SolrInputDocument();
document.addField("id", documentId);
...
server.add(document);
server.commit();
2- Al actualizar una propiedad de la objeto, ya que Solr no puede actualizar un solo campo, primero recuperar el objeto de MongoDB entonces puedo actualizar el índice Solr con todas las propiedades de objeto y otros nuevos y hacer algo como
StreamingUpdateSolrServer update = new StreamingUpdateSolrServer(url, 1, 0);
SolrInputDocument document = new SolrInputDocument();
document.addField("id", documentId);
...
update.add(document);
update.commit();
3- al consultar, primero consulto Solr y luego al recuperar la lista de documentos SolrDocumentList
Voy a través de cada documento y:
- obtener el ID del documento
- obtener el objeto de MongoDB con el mismo ID que ser capaz de recuperar las propiedades de allí
4- Cuando borrando, bueno, no he hecho esa parte todavía y no estoy seguro de cómo hacerlo en Java
¿Alguien tiene sugerencias sobre cómo hacer esto de manera más eficiente para cada uno de los escenarios descritos aquí? ¿Le gusta el proceso para hacerlo de manera que no demore 1 hora reconstruir el índice cuando tiene muchos documentos en Solr y agrega un documento a la vez? mis requisitos aquí son que los usuarios pueden querer agregar un documento a la vez, muchas veces y me gustaría que puedan recuperarlo inmediatamente después de
¿Qué tan grande es cada documento y las propiedades que desea indexar? –
@JustinThomas - bueno, cada documento puede tener alrededor de 10 propiedades, algunas de ellas pueden ser descripciones largas y me gustaría hacer un índice para la búsqueda de texto completo en la descripción, solo coincidencia exacta en las otras. Eso responde tu pregunta? – Guillaume