Linq (o SQL): obtenga una consulta de búsqueda y ordénela por mejor resultado [cerrado]

Quiero crear una página de búsqueda para mi sitio web. La lógica es que el usuario ingresa algunas palabras clave y yo debería buscar esas palabras y luego ordenar el resultado por las mejores coincidencias. es decir: El usuario ingresa: "MVC Microsoft WPF ASP.Net". Quiero mostrar los resultados que contienen la mayoría de coincidencias, como:

Mejores partidos:
Aprendiendo Microsoft ASP.Net MVC
Cómo alojar un formulario WPF en Microsoft ASP.Net

Partidos parciales:
Microsoft MVC
Microsoft WPF
Microsoft ASP.Net
ASP.Net MVC

Coincidencias de palabras clave:
MVC
Microsoft
WPF
ASP.Net

preguntado el 16 de mayo de 11 a las 19:05

¿Puedes publicar algún código o el problema que tienes? -

¿Qué servidor de base de datos estás usando? -

4 Respuestas

Probar Lucene.NET, ordena los resultados de búsqueda por relevancia de forma predeterminada

contestado el 16 de mayo de 11 a las 23:05

Finalmente encontré la solución real.

Eso es "Índice de texto completo".

Un tutorial completo está aquí:

http://blog.sqlauthority.com/2008/09/05/sql-server-creating-full-text-catalog-and-index/

contestado el 18 de mayo de 11 a las 17:05

Dependiendo de qué / cómo esté buscando, una solución simple es crear su sitio web para que esté completamente indexado en Google y aprovechar API de búsqueda personalizada de Google.

contestado el 16 de mayo de 11 a las 23:05

He aquí una estrategia básica; requeriría un proceso almacenado:

  1. Divida la cadena de palabras clave en espacios y rellene con '%' s.
  2. Para cada término de búsqueda, realice una selección de inserción en la misma tabla temporal en memoria. Obtendrá filas duplicadas, una por registro por "visita" en un término de búsqueda.
  3. Seleccione de esta tabla temporal cada resultado distinto, con un recuento del número de veces que ese resultado aparece en la tabla temporal. Esta es su "relevancia", por la que puede ordenar.

contestado el 17 de mayo de 11 a las 00:05

Esta idea es buena pero no sé cómo contar el número de cada resultado único, ¿tienes alguna idea? - Alireza

el uso de una función Agrupar por funcionaría. Por ejemplo SELECT result, Count(result) FROM #MyTempTable GroupBy result; - IndigoDelta

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.