sql >> Database >  >> RDS >> Sqlserver

SQL Server bevat volledige tekstfunctie die de verwachte resultaten niet retourneert

In Fulltext worden alle niet-alfanumerieke tekens in de indexen verwijderd en vervangen door spaties .Dus in uw zoekopdracht, aangezien u "." in de string zoekt u naar "website" en "net".

Je kunt dit op 2 manieren oplossen.

U moet een aparte tabel of apart veld hebben met de volledige tekstgegevens, gescheiden van de originele tabel waar u de originele gegevens bewaart.

In de fulltext tabel kun je de ". . verwijderen " en bewaar "websitenet ".

In dat geval moet u alle "." uit de zoekreeks voordat u de zoekopdracht uitvoert. Als u wilt zoeken met ".", moet u "." vervangen. met een tekenreeks -bijvoorbeeld "punt".

Dus in dit geval zou u "websitedotnet . opslaan ".

Wanneer u deze keer zoekt, vervangt u alle "." met "punt" in de zoekopdracht.

OK nu uw geval met een nieuw veld waar u de kolom opslaat die moet worden doorzocht op FTS, dus:

    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

dan uw vraag:

declare @search_client nvarchar(100) = 'website'

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

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


  1. Vind dubbele waarden in matrixkolom

  2. Lijst en kolommen in één instructie weergeven

  3. Spring Boot:Jdbc javax.net.ssl.SSLException:inkomend sluiten voordat close_notify van peer wordt ontvangen

  4. Is er een manier om een ​​NULL-vergelijking van 2 waarden te vereenvoudigen?