sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server Indeholder fuldtekstfunktion, der ikke returnerer forventede resultater

I fuldtekst fjernes alle ikke-alfanumeriske tegn i indekserne og erstattes af tomme felter .Så i din søgning, da du havde "." i strengen søger du efter "website" og "net".

Du kan løse dette på 2 måder.

Du skal have en separat tabel eller et separat felt, der har fuldtekstdata, adskilt fra den originale tabel, hvor du beholdt de originale data.

I fuldteksttabellen kan du fjerne ". " og gem "websitenet ".

I så fald skal du fjerne alle "." fra søgestrengen, før du foretager forespørgslen. Hvis du vil forespørge med ".", skal du erstatte "." med en tegnstreng -for eksempel "dot".

Så i dette tilfælde vil du gemme "websitedotnet ".

Når du søger denne gang, erstatter du alle "." med "prik" i forespørgslen.

OK nu din sag med et nyt felt, hvor gemmer kolonnen, der skal søges efter FTS så:

    ID      DESCRIPTION               DESCFTS
    -----------------------------------------------------
    1   this is a website.        this is a websitedot
    2   a website exists.         a website existsdot
    3   go to mywebsite.net       go to mywebsitedotnet
    4   go to mywebsite.net.      go to mywebsitedotnetdot

derefter din forespørgsel:

declare @search_client nvarchar(100) = 'website'

set @search_client = replace(@search_client, '.', 'dot')

select * from dbo.temp where contains ((DESCFTS), @search_client)


  1. Er der nogen måde/værktøj til at identificere estimeret forespørgselskørselstid i SQL SERVER

  2. Oracle-ækvivalent til java System.currentTimeMillis()?

  3. Rudimentært problem:grundlæggende PL/SQL-konsoludgang?

  4. R12.2 Rapport om online patching