Actualmente estoy trabajando en una aplicación donde tenemos una base de datos SQL-Server y necesito obtener un trabajo de búsqueda de texto completo que nos permita buscar nombres de personas.Búsqueda de texto completo de SQL Server
Actualmente, el usuario puede ingresar un campo de nombre que busca 3 varchar cols diferentes. Primero, Último, Segundo nombre
Digamos que tengo 3 filas con la siguiente información.
1 - Phillip - J - Fry
2 - Amy - NULL - Wong
3 - Leo - NULL - Wong
Si el usuario introduce un nombre como 'Fry' lo hará fila de retorno 1. Sin embargo, si entran a Phillip Fry, Fr o Phil no reciben nada ... y no entiendo por qué está haciendo esto. Si buscan a Wong, obtienen las filas 2 y 3 si buscan a Amy Wong, y de nuevo no obtienen nada.
Actualmente la consulta está usando CONTAINSTABLE pero la he cambiado con FREETEXTTABLE, CONTAINS y FREETEXT sin diferencias notables en los resultados. Los métodos de tabla son preferidos porque devuelven los mismos resultados pero con clasificación.
Aquí está la consulta.
....
@Name nvarchar(100),
....
--""s added to prevent crash if searching on more then one word.
DECLARE @SearchString varchar(100)
SET @SearchString = '"'[email protected]+'"'
SELECT Per.Lastname, Per.Firstname, Per.MiddleName
FROM Person as Per
INNER JOIN CONTAINSTABLE(Person, (LastName, Firstname, MiddleName), @SearchString)
AS KEYTBL
ON Per.Person_ID = KEYTBL.[KEY]
WHERE KEY_TBL.RANK > 2
ORDER BY KEYTBL.RANK DESC;
....
Any Ideas ...? ¿Por qué esta búsqueda de texto completo no funciona correctamente?
Tenga en cuenta que los asteriscos como caracteres comodín solo funcionan cuando se utilizan al ** final ** de un término de búsqueda. Los asteriscos al principio de un término de búsqueda simplemente son ignorados por el motor de búsqueda de texto completo. – RSW
Gracias por la respuesta. Te olvidaste de Lila y Bender. ¿Puedo usar Lucene para eso? –