studio - sql server business intelligence
"Publicaciones similares" como funcionalidad usando MS SQL Server? (3)
Tengo muchos almacenes de artículos en la base de datos de MS SQL Server 2005 en una tabla llamada Artículos-
"Articles (ArticleID, ArticleTitle, ArticleContent)"
Ahora quiero una consulta SP o SQL que me devuelva un artículo similar en contra de la entrada de cualquier usuario (muy parecido a "publicaciones similares" en blogs O "preguntas relacionadas" en stackoverflow). La coincidencia debería funcionar tanto en ArticleTitle como ArticleContent. La consulta debe ser lo suficientemente inteligente como para ordenar el resultado sobre la base de su relevancia.
¿Es posible hacer esto en MS SQL Server 2005?
Algo como esto podría funcionar, una especie de sistema de clasificación. Probablemente tendrías que dividir la cadena en tu aplicación para construir una cadena de SQL, pero yo he usado algo similar para construir una búsqueda efectiva en el sitio.
Select
Top 10
ArticleID,
ArticleTitle,
ArticleContent
From
Articles
Order By
(Case When ArticleTitle = ''Article Title'' Then 1 Else 0 End) Desc,
(Case When ArticleTitle = ''Article'' Then 1 Else 0 End) Desc,
(Case When ArticleTitle = ''Title'' Then 1 Else 0 End) Desc,
(Case When Soundex(''Article Title'') = Soundex(ArticleTitle) Then 1 Else 0 End) Desc,
(Case When Soundex(''Article'') = Soundex(ArticleTitle) Then 1 Else 0 End) Desc,
(Case When Soundex(''Title'') = Soundex(ArticleTitle) Then 1 Else 0 End) Desc,
(Case When PatIndex(''%Article%Title%'', ArticleTitle) > 0 Then 1 Else 0 End) Desc,
(Case When PatIndex(''%Article%'', ArticleTitle) > 0 Then 1 Else 0 End) Desc,
(Case When PatIndex(''%Title%'', ArticleTitle) > 0 Then 1 Else 0 End) Desc,
(Case When PatIndex(''%Article%Title%'', ArticleContent) > 0 Then 1 Else 0 End) Desc,
(Case When PatIndex(''%Article%'', ArticleContent) > 0 Then 1 Else 0 End) Desc,
(Case When PatIndex(''%Title%'', ArticleContent) > 0 Then 1 Else 0 End) Desc
A continuación, puede agregar / eliminar declaraciones de casos de la cláusula order by para mejorar la lista en función de sus datos.
Creo que la pregunta es qué significa "similar" para ti. Si crea un campo para que el usuario ingrese algún tipo de etiquetas, se vuelve mucho más fácil realizar consultas.
En primer lugar, debe definir qué significa similitud de artículo.
Por ejemplo, puede asociar metainformación con artículos, como etiquetas.
Para poder encontrar artículos similares, necesita extraer algunas características de ellos, por ejemplo, puede crear un índice de texto completo.
Puede aprovechar la capacidad de búsqueda de texto completo de MSSQL 2005
-- Assuming @Title contains title of current articles you can find related articles runnig this query
SELECT * FROM Acticles WHERE CONTAINS(ArticleTitle, @Title)