Estoy tratando de crear una búsqueda de negocios con características sociales usando ElasticSearch. Tengo un directorio de negocios, y los usuarios pueden interactuar con esos negocios de diferentes maneras: revisándolos, registrándolos, etc.¿Cómo se puede usar ElasticSearch para implementar la búsqueda social?
Cuando un usuario busca una empresa, me gustaría poder mostrarle negocios con los que sus amigos han interactuado en la parte superior de los resultados (o filtros basados en esas interacciones). ¿Cuál es la mejor manera de configurar mi índice para lograr esto?
se me ocurre tiene algunas soluciones posibles, pero soy un principiante con ES y no estoy seguro de lo que va a causar problemas:
que podría utilizar múltiples tennancy y crear una separada índice para cada usuario. Lo descarté porque la cantidad de usuarios es mucho mayor que la cantidad de negocios o la cantidad de contenido específico del usuario.
Podría agregar una lista de pares de usuario/puntaje para cada negocio indexado. Cada usuario que haya interactuado con la empresa estaría allí, y el puntaje representaría la cantidad de interacción que tuvieron con la empresa (esto es suficiente para mis propósitos de filtrado/clasificación). Cada vez que interactúan con el negocio, actualizaría el puntaje en el índice. El problema con esto es que solo me importa la actividad de mis amigos, por lo que tendría que encontrar la manera de tener en cuenta quiénes son mis amigos al crear una puntuación compuesta para el negocio. No sé cómo hacer esto en ES.
Podría crear un esquema similar, pero en lugar de llevar la puntuación de mis interacciones con una empresa, la puntuación reflejaría las interacciones de mis amigos con la empresa. Esto elimina la necesidad de modelar mi gráfico social en ElasticSearch, pero significa que cada vez que una persona interactúa con un negocio, necesitaría actualizar todos los puntajes de sus amigos. También significaría que la lista de pares de usuario/puntaje para cada negocio sería mayor, ya que deberá incluir a cualquier persona que tenga un amigo que haya interactuado con la empresa.
La solución final en la que puedo pensar es realizar un seguimiento de cada interacción individual que le sucede a una empresa y agregarla al documento comercial en ES. Esto no me parece realista: combina los problemas de las otras soluciones. Pero es probablemente el enfoque más directo en términos de mantener el índice actualizado.
¡Gracias por su ayuda!
Me enfrento a un problema similar: ¿te importa compartir cómo terminaste haciéndolo? – EugeneMi