Sur la base de ce que vous avez décrit votre modèle pour ressembler, Hibernate Search sera en mesure de vous donner ce que vous avez besoin tout à fait facilement.
Il semble que vous recherchiez une combinaison d'un index incorporé et d'un filtre. Je suppose que vous avez une relation de plusieurs à plusieurs entre l'objet et le rôle. Si oui, vous avez probablement quelque chose comme ça dans l'objet:
@ManyToMany
@JoinTable(name = "object_role",
joinColumns = @JoinColumn(name = "object_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles = new HashSet<Role>();
Pour prendre les rôles et les intégrer dans le cadre de l'index créé pour objet, vous devez simplement mettre au-dessus @IndexedEmbedded(prefix = "somPrefixName")
@ManyToMany
.
Vous pouvez ensuite définir un filtre en utilisant @FullTextFilterDef
qui examine cet index incorporé et filtre un rôle donné (qui serait probablement le rôle de l'utilisateur qui exécute la recherche). Cela garantira que seuls les objets liés au rôle donné sont renvoyés par la requête de recherche.
En bref, Hibernate Search sera en mesure de fournir ce dont vous avez besoin (en supposant que je comprends correctement vos besoins). Je serai heureux de donner plus de détails sur comment si vous le souhaitez.
donc c'était ma question - comment puis-je les combiner d'une manière indexée? puisque je ne veux pas créer une requête en utilisant où pour chaque rôle! et je ne veux pas apporter Je dois créer un index pour les données sécurisées .. – Dejell
Je pense que vous pouvez les filtrer en restreignant l'entité sur laquelle vous ferez votre recherche .. – Jack