usa tutorial que para instalar index funciona elastic crear consultas como comandos sql database algorithm tags

sql - tutorial - Cómo encontrar los registros con las etiquetas más comunes, como las preguntas relacionadas en StackOverflow



para que se usa elastic search (3)

No estoy del todo seguro de lo que quiere decir, pero la página Etiquetas enumera las etiquetas en orden de popularidad (como en la cantidad etiquetada).

Editar: ¿ se trata de SO o de su propia aplicación? Si se trata de su propia aplicación, elimine la etiqueta SO ya que es un poco engañosa.

Edit2: Diría algo como:

SELECT * FROM `questions` WHERE `tag` LIKE ''%tagname%'' OR (looped for each tag) LIMIT 5,0

Donde 5 es el resultado máximo que desea devolver (al menos para alguna optimización). Probablemente no sea la mejor solución, pero podría ver que funciona.

También es posible que desee probar una coincidencia LIKE con el título.

Podemos etiquetar una pregunta con varias etiquetas en el sitio web de StackOverflow. Me pregunto cómo encontrar las preguntas más relacionadas con las etiquetas comunes.

Supongamos que tenemos 100 preguntas en una base de datos, cada pregunta tiene varias etiquetas. Supongamos que el usuario está navegando una pregunta específica y queremos que el sistema muestre las preguntas relacionadas en la página. El criterio para la pregunta relacionada es que tienen las etiquetas más comunes.

Por ejemplo: la pregunta 1 está etiquetada con AAA, BBB, CCC, DDD, EEE.

La pregunta 2 está relacionada con el top 1 porque también tiene todas esas 5 etiquetas. La pregunta 3 está relacionada con las 2 principales porque tiene solo 4 o 3 etiquetas que tiene Questio1. ......

Entonces mi pregunta es cómo diseñar la base de datos y descubrir rápidamente las preguntas relacionadas con la Pregunta 1. Muchas gracias.


Quizás algo como:

select qt.question_id, count(*) from question_tags qt where qt.tag in ( select qt2.tag from question_tags qt2 where qt2.question_id = 123 ) group by qt.question_id order by 2 desc


Si puede garantizar que no hay etiquetas duplicadas para una pregunta, puede hacer lo siguiente:

SELECT QT2.question_id, COUNT(*) AS cnt FROM Question_Tags QT1 INNER JOIN Question_Tags QT2 ON QT2.tag = QT1.tag AND QT2.question_id <> QT1.question_id WHERE QT1.question_id = @question_id GROUP BY QT2.question_id ORDER BY cnt DESC

Si no puede garantizar la exclusividad de las etiquetas dentro de una pregunta, entonces la solución de Tony Andrews funcionará. El suyo funcionará en cualquier caso, pero debe comparar el rendimiento de su sistema con este método si puede garantizar la exclusividad mediante restricciones.