2010-07-21 3 views
1

Actuellement, nous avons une application qui doit effectuer des recherches très rapides sur ~ 2 enregistrements.Recherche textuelle et paramétrique évolutive (C#)

Les recherches doivent rechercher à la fois un grand champ de texte libre et un nombre de champs entiers/décimaux entre différentes plages, ainsi que diverses fonctions/calculs & de tri.

Actuellement, nous gérons cela avec une grande base de données MSSQL, en utilisant le moteur de texte intégré intégré, et une certaine réplication pour déplacer la charge des tables transactionnelles.

Cependant, comme vous l'avez peut-être deviné, cette solution n'est pas la plus évolutive. J'ai écrit un petit magasin de documents basé sur Lucene, et je suis généralement très impressionné par les résultats, avec des recherches de texte ne prenant pas beaucoup plus d'une demi-seconde (sur 100k enregistrements). La partie la plus difficile est la recherche paramétrique - je suis conscient que Lucene fait la comparaison de gamme de base - mais je pense que nous avons besoin de quelque chose de plus puissant. J'ai fait une petite base de données de test en utilisant db4o - qui a des capacités de requête puissantes, mais ces requêtes sont assez lentes - prenant plus de 15 secondes sur seulement 100k enregistrements - où SQL prend environ 1,5 secondes pour les recherches paramétriques.

De plus, notre base de données doit avoir une résolution de mise à jour de moins de 10 minutes, avec environ 15% des enregistrements changeant quotidiennement. Notre serveur SQL gère cela actuellement, mais commence à craquer.

Des conseils sur les technologies appropriées & approches seraient appréciés.

Cheers, Dave

+0

Pourriez-vous préciser ce que vous entendez par «besoin de quelque chose de plus puissant». A propos de la recherche paramétrique Lucene? Il est assez puissant et devrait prendre en charge la plupart des requêtes. – Mikos

+1

db4o en prenant 15 secondes sur 100k objets ne sonne pas comme notre base de données. Peut-être que vous souhaitez poster votre code sur les forums de db4o? http://developer.db4o.com/Forums.aspx Je suis sûr que quelque chose peut être fait pour la vitesse. –

+0

Pourquoi ne pas utiliser la recherche de texte intégral de SQL Server? –

Répondre

0

LinkedIn a écrit un add-on à Lucene appelé bobo pour développer ses requêtes de recherche facted qui pourraient être dignes d'intérêt. Mais je pense que le bobo n'est vraiment nécessaire que si vous avez un index absolument massif - il doit y avoir quelque chose de vraiment bizarre si une recherche sur 100k documents prend autant de temps.

Questions connexes