sql >> Databáze >  >> RDS >> Sqlserver

SQL Server obsahuje Full Text Funkce nevrací očekávané výsledky

Ve Fulltextu jsou všechny nealfanumerické znaky z indexů odstraněny a nahrazeny mezerami .Takže při hledání, protože jste měli "." v řetězci hledáte "website" a "net".

Můžete to opravit dvěma způsoby.

Musíte mít samostatnou tabulku nebo samostatné pole, které obsahuje fulltextová data, oddělená od původní tabulky, pokud si ponecháte původní data.

Ve fulltextové tabulce můžete odstranit ". “ a uložit „websitenet ".

."

V takovém případě musíte odstranit všechny "." z vyhledávacího řetězce, než provedete dotaz. Pokud se chcete dotazovat pomocí ".", musíte nahradit "." se znakovým řetězcem – například „tečka“.

V tomto případě byste tedy uložili „websitedotnet ".

."

Když budete tentokrát hledat, nahradíte všechna „.“ s "tečkou" v dotazu.

OK, nyní váš případ s novým polem, kam uložte sloupec, který se má hledat podle FTS, takže:

    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

pak váš dotaz:

declare @search_client nvarchar(100) = 'website'

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

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


  1. Oracle Vyberte datum mezi dneškem

  2. Jak zkontrolovat databázi na nerootovaném zařízení Android

  3. Magento Mass Import obrázků s MAGMI - obrázky vyloučeny

  4. Získejte záznamy 10 minut před datem systému v SQL