2011-11-01 17 views
5

Utilizando el servidor Sql 2008, ¿cómo puede encontrar una coincidencia de cadena exacta usando la búsqueda de texto completo? Estoy teniendo un momento realmente difícil con esto y no pude encontrar una solución satisfactoria en ningún lugar en línea.Encuentre una coincidencia exacta utilizando la búsqueda de texto completo

Por ejemplo, si estoy buscando la cadena "Bojan Skrchevski", quiero que el primer resultado sea exactamente eso.

Hasta ahora he tratado de formatear la cadena como: "Bojan * NEAR Skrchevski *" y llamo CONTAINSTABLE para obtener resultados, pero esta cadena está formateada para devolver más resultados como Bojana y Bojananana, etc. También traté de ORDER BY RANK, pero todavía no tiene éxito.

Además, en mi cadena tengo una secuencia de números como: "3 1 7", pero con el formato actual También devuelve "7 1 3", etc.

Ejemplo:

DECLARE @var varchar(4000); 
SET @var = '"Oxford*" NEAR 24 NEAR 7 NEAR 5 NEAR "London*"' 
SELECT [Key] FROM CONTAINSTABLE(dbo.[MyTable], [MyField], @var); 

Quiero poder obtener el orden exacto. No obtener "Oxford 7 24 5 London" como resultado.

¿Cómo puedo formatear la cadena para lograr esto correctamente?

Respuesta

0

Tal vez una posibilidad consistiría en seleccionar varios resultados con la búsqueda de texto completo y luego SELECT el específico de dichos resultados. Pero tal vez podría haber una mejor solución para esto.

Probé este enfoque y realmente funcionó. También funciona mucho más rápido que solo SELECT el valor.

1

Hay 2 opciones

1) Esto hará que todos los artículos que tienen la montaña en su nombre

SELECT Name, ListPrice 
FROM Production.Product 
WHERE ListPrice = 80.99 
    AND CONTAINS(Name, 'Mountain'); 
GO 

2) Esto hará que todos los artículos que tienen estos 3 cadenas en el Documento no importa qué orden

SELECT Title 
FROM Production.Document 
WHERE FREETEXT (Document, 'vital safety components'); 

Depende de lo que realmente quiere pero no pude entender completamente.

Si me falta el punto, publique una muestra y el resultado.

KR,

Kristof

+0

@Kristoff - ejemplo: si busco una cadena como esta: "Oxford 24 3 6 London" y si hay "Oxford 3 24 6 London", esto también será devuelto. Solo quiero la coincidencia exacta en el orden exacto. – TheBoyan

+0

Para referencia, aquí es donde se encuentran los ejemplos de: http://msdn.microsoft.com/en-us/library/ms142583.aspx – Mike

Cuestiones relacionadas