2009-11-10 19 views
11

Estoy usando SQL Server Full Text Search, con la palabra clave FREETEXTTABLE para devolver una tabla de resultados basada en unas pocas columnas, buscando una palabra clave.Dar prioridad/peso a una columna usando FREETEXTTABLE

Ahora tengo 2 columnas principales que estoy buscando, Título y Descripción, quiero dar prioridad a la columna Título, ya que es probable que tenga mis resultados, pero la Descripción también puede contener resultados, pero quiero que dé prioridad para una palabra en Título sobre Descripción (pero no quiero usar CONTAINSTABLE ya que esto es demasiado específico). ¿Hay alguna forma de dar columnas de ponderación/precedencia usando FREETEXTTABLE?

Respuesta

13

Tendrá que utilizar 2 consultas con un sindicato, proporcionando un 'peso' de su cuenta, algo como esto:

select [key], sum(rnk) as weightRank 
from 
     (
      select Rank * 2.0 as rnk, [key] from freetexttable(tableName,Title,'free text string') 
      union all 
      select Rank * 1.0 as rnk, [key] from freetexttable(tableName,Description,'free text string') 
     ) as t 
group by [key] 
Cuestiones relacionadas