Domanda

Ad esempio, la mia query è simile alla seguente utilizzando SQL Server 2005:

SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#') 

Ho un indice di testo completo definito per utilizzare la colonna SearchField che restituisce risultati quando si utilizza:

SELECT * FROM Table WHERE SearchField LIKE '%c#%'

Credo che # sia una lettera speciale, quindi come posso consentire a FREETEXT di funzionare correttamente per la query sopra?

È stato utile?

Soluzione

Il carattere # è indicizzato come punteggiatura e quindi ignorato, quindi sembra che rimuoveremo la lettera C dalle nostre liste di indicizzazione delle parole da ignorare.

L'ho testato localmente dopo averlo fatto e aver ricostruito gli indici e ho ottenuto risultati!

Cercando di utilizzare un linguaggio diverso per il word breaker nella colonna indicizzata, in modo che quei caratteri speciali non vengano ignorati.

MODIFICARE:Ho anche trovato questa informazione:

c# è indicizzato come c (se c non è nell'elenco delle parole non significative, vedere di più sugli elenchi delle parole non significative più avanti), ma C# è indicizzato come C# (in SQL 2005 e SQL 2000 in esecuzione su Win2003 indipendentemente dal fatto che C o c sia nel tuo elenco delle parole non significative elenco di parole).Non solo C# viene archiviato come C#, ma qualsiasi lettera maiuscola seguita da #.Al contrario, c++ (e qualsiasi altra lettera minuscola seguita da a++) viene indicizzata come c (indipendentemente dal fatto che c sia nell'elenco delle parole non significative).

Altri suggerimenti

Citando una pagina di aiuto molto replicata sul linguaggio di query del servizio di indicizzazione:

Per utilizzare caratteri trattati in modo speciale come &, |, ^, #, @, $, (, ), in una query, racchiudere la query tra virgolette (“).

Per quanto ne so, ricerca nel testo completo in MSSQL viene eseguito anche dal servizio di indicizzazione, quindi questo potrebbe essere d'aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top