75 votes

Est-il possible d’utiliser la recherche de texte complet (FTS) avec LINQ ?

Je me demande si est possible d’utiliser FTS avec LINQ à l’aide de .NET Framework 3.5. Je suis à la recherche autour de la documentation qui n’a pas encore trouver quelque chose d’utile.

Quelqu'un a-t-il une expérience là-dessus ?

76voto

John Points 9543

Oui. Cependant, vous devez créer la fonction SQL server d'abord, qu'en tant que par défaut LINQ va utiliser une comme.

Ce billet de blog qui vous expliquera les détails, mais c'est l'extrait:

Pour le faire fonctionner, vous devez créer une fonction à valeur de table qui ne rien de plus qu'un CONTAINSTABLE requête basée sur les mots clés que vous passer dans,

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

Vous pouvez ensuite ajouter cette fonction à votre LINQ 2 modèle SQL et il a presto, vous vous pouvez maintenant écrire des requêtes comme.

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

12voto

Gabriel Isenberg Points 6298

Lol Recherche en texte intégral n’est pas pris en charge par LINQ To SQL.

Cela dit, vous pouvez utiliser une procédure stockée qui utilise FTS et que les données de traction de requête LINQ To SQL de celle.

9voto

Glenn Slaven Points 15742

Je ne le crois. Vous pouvez utiliser « contient » sur un champ, mais il génère uniquement un `` requête. Si vous souhaitez utiliser le texte intégral, je conseille d’utiliser une procédure stockée pour faire la requête puis passez-la à LINQ

9voto

Lion_cl Points 349

Si vous ne voulez pas créer des jointures et souhaitez simplifier votre code c#, vous pouvez créer la fonction SQL et l’utiliser en « de » clause :

Après mise à jour de votre DBML, utilisez-le dans linq :

Cela produira SQL simple comme ceci :

Il s’agit de travaux de recherche par plusieurs colonnes comme vous pouvez le voir sur la mise en œuvre de la fonction ad_Search.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X