Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ist es möglich, die Volltextsuche (FTS) mit LINQ zu verwenden?

Ja. Sie müssen jedoch zuerst eine SQL-Server-Funktion erstellen und diese aufrufen, da LINQ standardmäßig ein Like verwendet.

Dieser Blogbeitrag, der die Details erklärt, aber das ist der Auszug:

Damit es funktioniert, müssen Sie eine Tabellenwertfunktion erstellen, die nichts anderes tut als eine CONTAINSTABLE-Abfrage, die auf den von Ihnen übergebenen Schlüsselwörtern basiert,

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

Dann fügen Sie diese Funktion zu Ihrem LINQ 2 SQL-Modell hinzu und schon können Sie Abfragen wie schreiben.

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