2011-11-01 24 views
5

Utilizzando lo Sql Server 2008 come si può effettivamente trovare una corrispondenza esatta con la stringa utilizzando la ricerca full-text. Sto attraversando un periodo difficile con questo e non sono riuscito a trovare una soluzione soddisfacente ovunque online.Trova corrispondenza esatta utilizzando la ricerca full-text

Ad esempio, se sto cercando la stringa "Bojan Skrchevski", voglio che il primo risultato sia esattamente quello.

Finora ho provato a formattare la stringa come: "Bojan * NEAR Skrchevski *" e chiamare CONTAINSTABLE per ottenere risultati, ma questa stringa è formattata per restituire più risultati come Bojana e Bojananana ecc. Ho anche provato ad ORDINARE RANK, ma ancora nessun successo.

Inoltre, nella mia stringa ho una sequenza numerica del tipo: "3 1 7", ma con la formattazione corrente restituisce anche "7 1 3", ecc

Esempio:

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

Voglio essere in grado di ottenere l'ordine esatto. Non ottenere "Oxford 7 24 5 London" come risultato.

Come si formatta la stringa per eseguire correttamente questa operazione?

risposta

0

Forse un approccio potrebbe essere quello di selezionare più risultati con la ricerca full-text e quindi SELECT quella specifica da questi risultati. Ma forse potrebbe esserci una soluzione migliore per questo.

Ho provato questo approccio e in realtà ha funzionato. Funziona anche molto più velocemente rispetto al valore SELECT.

1

Ci sono 2 opzioni

1) In questo modo ottenere tutti gli elementi che hanno montagna nel loro nome

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

2) In questo modo ottenere tutti gli elementi che hanno questi 3 stringhe nel documento non importa quale ordine

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

Dipende da ciò che si vuole veramente ma non ho potuto capire completamente.

Se mi manca il punto, si prega di inviare un campione e quale dovrebbe essere il risultato.

kr,

Kristof

+0

@Kristoff - esempio: se cerco una stringa come questa: "Oxford 24 3 6 London" e se c'è "Oxford 3 24 6 London" verrà restituito anche questo. Voglio solo la corrispondenza esatta nell'ordine esatto. – TheBoyan

+0

Per riferimento è dove si trovano gli esempi: http://msdn.microsoft.com/en-us/library/ms142583.aspx – Mike

Problemi correlati