2010-04-22 4 views
2

Je veux ajouter un moteur de recherche sur mon site. Je veux qu'il gère les recherches booléennes et me donne une liste de résultats dans l'ordre ou la meilleure correspondance. J'en ai besoin pour pouvoir travailler avec LINQ, parce que je veux ajouter des clauses supplémentaires à la requête finale qui sera exécutée. Je suis à la recherche du meilleur moteur de recherche open source .NET qui fonctionne avec LINQ. J'aime lucene.net mais le problème est que l'interface LINQ (LINQ to Lucene) n'a pas été mise à jour depuis 2008. Y at-il de bonnes options là-bas?Ouvrir le moteur de recherche LINQ du site internet

Répondre

1

Vous pouvez essayer d'utiliser le serveur de recherche gratuit Express de Microsoft. Il est disponible en beta for the 2010 version mais sera bientôt disponible. L'API de recherche (SharePoint) est très similaire à SQL, vous pouvez donc ajouter des clauses where supplémentaires.

Ce n'est pas linq ou open source, mais c'est gratuit et peut fonctionner dans votre cas. J'ai regardé un peu le lucene linq api moi-même, et suis arrivé à la même conclusion que vous avez. Ce n'est pas mis à jour, alors que Lucene est encore en train d'être travaillé.

L'autre option consiste à créer votre propre fournisseur Lucene Linq, mais cela demandera du travail.

Documentation pour la classe FullTextSqlQuery. (ancienne version docs avec l'échantillon here)

Voici un extrait de code pour montrer à quoi il ressemble:

FullTextSqlQuery fullTextSqlQuery = new FullTextSqlQuery(site) 
fullTextSqlQuery.QueryText = String.Format("SELECT Title, SiteName, Path FROM Scope() WHERE \"scope\"='All Sites' AND CONTAINS('\"{0}\"')", searchPhrase), 

et vous pouvez ajouter plus à la clause WHERE de la requête.

+0

Mikael, j'apprécie vraiment vos suggestions. Je ne pense pas que Search Server soit une option en ce moment car j'en ai besoin pour travailler sur un serveur web partagé (je ne peux pas installer de logiciel) et j'en ai besoin pour travailler avec LINQ. Aussi je n'ai pas le temps d'investir en créant un fournisseur linq linux, je préfèrerais trouver quelque chose qui existe déjà:/ – Noel

+0

Gardez à l'esprit que linq est juste un fournisseur/wrapper pour l'API sous-jacente implémente. Vous devriez très bien pouvoir modifier la requête avec un code personnalisé au lieu de linq. Si vous pensez joindre linq à partir d'une autre source de données (objets, db etc), cela pourrait très bien ne pas fonctionner. À quoi ressemble votre requête lucene, et comment devez-vous la modifier? –

0

J'ai décidé d'utiliser la fonction d'indexation de texte intégral du serveur sql. Ce n'est pas aussi complet que lucene.net, mais pour mes besoins, le travail est plutôt bien fait.

Questions connexes