Para el último par de horas que he estado jugando con todo tipo de variaciones diferentes de búsqueda de texto completo de SQL Server. Sin embargo, todavía no puedo entender cómo funciona la clasificación. Me he encontrado con un par de ejemplos que realmente me confunden sobre su rango más alto que otros. Por ejemploRanking de búsqueda de texto completo (SQL Server)
Tengo una tabla con 5 cols + más que no están indexadas. Todos son campos nvarchar
.
Me postulo esta consulta (Bueno, casi .. Me volver a teclear con diferentes nombres)
SET @SearchString = REPLACE(@Name, ' ', '*" OR "') --Splits words with an OR between
SET @SearchString = '"'[email protected]+'*"'
print @SearchString;
SELECT ms.ID, ms.Lastname, ms.DateOfBirth, ms.Aka, ms.Key_TBL.RANK, ms.MiddleName, ms.Firstname
FROM View_MemberSearch as ms
INNER JOIN CONTAINSTABLE(View_MemberSearch, (ms.LastName, ms.Firstname, ms.MiddleName, ms.Aka, ms.DateOfBirth), @SearchString) AS KEY_TBL
ON ms.ID = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 0
ORDER BY KEY_TBL.RANK DESC;
Por lo tanto si busco 11/05/1964 John Jackson me gustaría tener "11/05/1964" O "JOHN *" o "* JACKSON" y estos resultados:
ID -- First Name -- Middle Name -- Last Name -- AKA -- Date of Birth -- SQL Server RANK
----------------------------------------------------------------------------------
1 | DAVE | JOHN | MATHIS | NULL | 11/23/1965 | 192
2 | MARK | JACKSON | GREEN | NULL | 05/29/1998 | 192
3 | JOHN | NULL | JACKSON | NULL | 11/05/1964 | 176
4 | JOE | NULL | JACKSON | NULL | 10/04/1994 | 176
Así que finalmente mi pregunta. No veo cómo la fila 1 y 2 se clasifican por encima de la fila 3 y por qué la fila 3 se clasifica igual que la fila 4. La fila 2 debería tener el rango más alto ya que la cadena de búsqueda también coincide con el nombre y el apellido como la fecha de nacimiento.
Si cambio el OR a Y no obtengo ningún resultado.
cómo combinar las columnas y utilizar exactamente?tengo el mismo problema – zsharp
¿Es mejor tener una columna calculada y tener un índice de texto completo en esa columna que tener que buscar en columnas separadas? – user636525