En mi consulta de búsqueda de texto completo, deseo asignar columnas particulares a un peso más alto. Considere la siguiente consulta:¿Cómo asigno pesos a diferentes columnas en una búsqueda de texto completo?
SELECT Key_Table.RANK, FT_Table.* FROM Restaurants AS FT_Table
INNER JOIN FREETEXTTABLE(Restaurants, *, 'chilly chicken') AS Key_Table
ON FT_Table.RestaurantID = Key_Table.[KEY]
ORDER BY Key_Table.RANK DESC
Ahora, quiero que la columna Nombre de tener un coeficiente de ponderación más alta en los resultados (Nombre, palabras clave y ubicación son indexada). Actualmente, si el resultado se encuentra en cualquiera de las tres columnas, los rangos no se verán afectados.
Por ejemplo, me gustaría una fila con el nombre "Pollo frío" para tener una clasificación más alta que una con Palabras clave "Pollo frío", pero otro nombre.
Editar:
no estoy interesado en el uso CONTAINSTABLE, porque eso significaría que separa las frases (frío y de pollo, etc.), lo que implicaría que yo tenga que buscar todas las combinaciones posibles - frío y de pollo, Chilly OR Chicken, etc. Me gustaría que el motor FTS automáticamente averigüe qué resultados combinan mejor, y creo que FREETEXT hace un buen trabajo de esta manera.
Disculpas si he entendido mal cómo funciona CONTAINS/CONTAINSTABLE.
Me preguntaba si algo usando UNION era posible, ¡pero mi cerebro no podía procesar el SQL involucrado! :) Creo que ambas son excelentes soluciones, ¡y una de ellas probablemente resolverá el problema! Déjame revisar y responderte. Sin embargo, no entendí por qué mencionó manipulaciones adicionales. –
Dave, la solución sorta funciona. El problema es que la selección devuelve resultados duplicados. Supongo que la mejor opción es almacenar en una variable de tabla, como sugirió? –
La selección devolverá duplicados, use la variable de tabla, luego seleccione distinct. Los duplicados se devuelven porque los valores de ColumnLocation y Rank serán diferentes en cada selección, por lo tanto, sql no los ve como duplicados al unirse por unión. –