2017-06-29 3 views
0

J'ai travaillé sur une application démonstrative pour une application web shopping. J'utilise Spring + Hibernate pour gérer les choses sur le serveur principal. Maintenant, comme je voudrais que les utilisateurs de l'application puissent rechercher dans les produits comme s'ils faisaient des recherches sur Google, je suis arrivé à la conclusion que Hibernate Search répondait le mieux à mes besoins. Cependant, j'aimerais que les administrateurs de l'application puissent rechercher des éléments en fournissant des filtres de recherche pour plusieurs attributs. Par exemple, la table "PRODUCT" contient des champs tels que id, name, desc, created_date etc, je souhaite fournir à l'administrateur un moyen de fournir différentes entrées telles que les données partielles pour id, name, desc et created_date et obtenir les informations pertinentes. Résultats de la recherche. Hibernate Search me permet de faire cela en combinant des requêtes avec des clauses comme "and", "should", etc. Mais, pour implémenter cela, je devrais annoter tous les champs interrogeables avec l'annotation @Field.Hibernate Rechercher Critères de recherche supplémentaires

Ma question ici est de savoir s'il serait judicieux d'annoter tous les attributs de recherche avec @Field ou existe-t-il un autre moyen de résoudre le même problème?

+0

Pouvez-vous expliquer ce qui vous tracasse exactement? La quantité de champs à annoter? Le simple fait d'ajouter des annotations à une classe? Autre chose? –

+0

Je suis dérangé par la performance des requêtes. Si j'essaie d'indexer toutes les colonnes comme si j'avais un champ nommé "create_user_id" et si je voulais que l'utilisateur puisse également effectuer une recherche fulltext, l'indexation de ce champ dans la recherche hibernate avec tous les autres champs diminuerait performance? –

+0

Ok, alors je réponds à la réponse de Sanne: il suffit d'annoter tous les champs dont vous avez besoin. Ne vous inquiétez pas de la performance tant que vous n'avez pas essayé l'outil et remarqué un problème, vous perdrez probablement votre temps. Les personnes travaillant sur Lucene (le moteur derrière Hibernate Search) ont déjà passé beaucoup de temps à optimiser, donc à moins que votre cas d'utilisation ne soit vraiment exotique (par exemple, des centaines ou des milliers de champs), Lucene devrait bien gérer ça. –

Répondre

1

Je suggère simplement annoter tous les champs dont vous avez besoin avec @field