2009-02-27 6 views

Respuesta

18

Todo depende de los volúmenes y el contenido de datos para etiquetar distribución y densidad de relaciones

Si tiene una distribución bajo la etiqueta y la relación de densidad (datos típicos generados por humanos), simplemente puede generar una identificación única o hash para cada posible colección de etiquetas en uso por los datos. Asociar el id 'colección tag' con cada instancia de datos con esas etiquetas

Esto puede funcionar sorprendentemente bien para muchas formas de humano datos generados

por ejemplo Stackoverflow tiene ~ 500,000 preguntas y ~ 20,000 etiquetas (¡demasiadas etiquetas dupe-ish!). La mayoría de las preguntas tienen menos de cinco etiquetas. En el peor de los casos, tendrá que asociar 500,000 identificaciones de 'colección de etiquetas', pero más realista tendrá varios miles

También tendrá que tener seguimiento de instancias o recolección de basura en la colección 'colección de etiquetas' como combinación específica de etiquetas caen fuera de uso

por ejemplo

  • Tag: id, tagName
  • TagCollection: id, instanceCount
  • TagCollectionTag: tagCollectionIId, TagId
  • datos: ID, título, contenido, tagCollectionId

etiquetas insertando es rápida si se usa un hash (hash en todas las etiquetas de la colección). De lo contrario, debe buscar las colecciones TagCollection y TagCollectionTag, pero esto no debe ser demasiado grande

La búsqueda es rápida; buscar TagCollectionTag para las instancias que contienen el conjunto específico de etiquetas, y luego encontrar filas de datos con cualquiera de los tagCollectionId de

la esperanza de que no era demasiado confuso :-)

+0

+1 años, cualquier comentario sobre cómo esto funcionó para usted? – TFD

+0

+1 Leí esta respuesta 1 año antes. Después de un año, también terminé buscando esta respuesta de nuevo :). Gracias por adelantado. ¿Podrías por favor dar sombra a la porción '(hash en todas las etiquetas de la colección)', quisiste generar un hash combinando todas las etiquetas correspondientes a esa colección con la lógica de la aplicación, o puedo obtener ayuda de la base de datos. ¿Qué clase de esquema de hash sería mejor aquí? – Sage

Cuestiones relacionadas