Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server съдържа функция за пълен текст, която не връща очаквани резултати

В пълен текст всички небуквено-цифрови знаци се премахват в индексите и се заменят с празни места .Така че при вашето търсене, тъй като сте имали "." в низа търсите „уебсайт“ и „мрежа“.

Можете да коригирате това по 2 начина.

Трябва да имате отделна таблица или отделно поле, което съдържа пълнотекстови данни, отделени от оригиналната таблица, където запазвате оригиналните данни.

В таблицата с пълен текст можете да премахнете „. “ и магазин „websitenet ".

В такъв случай трябва да премахнете всички "." от низа за търсене, преди да направите заявката. Ако искате да направите заявка с ".", трябва да замените "." със символен низ - например "точка".

Така че в този случай ще съхраните „websitedotnet ".

Когато търсите този път, замествате всички "." с "точка" в заявката.

Добре, сега вашият случай с ново поле, където се съхранява колоната, която да се търси чрез FTS, така че:

    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

тогава вашата заявка:

declare @search_client nvarchar(100) = 'website'

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

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да завъртя текстови колони в SQL Server?

  2. Дублиращи се записи с различно времево клеймо

  3. Топ 5 инструменти за моделиране на данни за SQL Server

  4. Как да конвертирате между формати на дата в SQL Server с помощта на CAST()

  5. Как да конвертирате празни пространства в нулеви стойности, като използвате SQL Server?