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

Възможно ли е да се използва пълнотекстово търсене (FTS) с LINQ?

да. Но първо трябва да създадете функция на SQL сървър и да я извикате, тъй като по подразбиране LINQ ще използва like.

Тази публикация в блога, която ще обясни подробностите, но това е извлечението:

За да работи, трябва да създадете функция с таблица, която не прави нищо повече от заявка CONTAINSTABLE въз основа на ключовите думи, които предавате,

create function udf_sessionSearch
      (@keywords nvarchar(4000))
returns table
as
  return (select [SessionId],[rank]
            from containstable(Session,(description,title),@keywords))

След това добавяте тази функция към вашия LINQ 2 SQL модел и той вече може да пишете заявки като.

    var sessList = from s   in DB.Sessions
                   join fts in DB.udf_sessionSearch(SearchText) 
                   on s.sessionId equals fts.SessionId
                 select s;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на varchar(MAX) срещу TEXT на SQL Server

  2. Не може да се започне разпределена транзакция

  3. Как мога да вляза и да намеря най-скъпите заявки?

  4. Всеки израз GROUP BY трябва да съдържа поне една колона, която не е външна препратка

  5. CAST и IsNumeric