On Tue, 25 Jan 2011 17:31:09 +0100 Jean Couteau <couteau@codelutin.com> wrote:
Je cherche à faire une requête avec l'opérateur Not mais mes résultats ne sont pas bon, a priori la requête est mal retranscrite pour solr.
search = Search.query(); search.eq(AgentSkill.FQ_FIELD_AGENTSKILL_AGENT, agentId); Search searchNot = search.not(); searchNot.contains(WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_READER, privateGroup.getWikittyId());
Je ne suis pas sur que ta requete soit bonne, car tu utilises contains et au final du ne met qu'un id de group, il faudrait plutot ecrire: neq(WikittyAuthorisation.FIELD_WIKITTYAUTHORISATION_READER, privateGroup.getWikittyId()) au lieu du not() et de ce qui suit ...
par contre, la requête solR semble à l'ouest :
2011-01-25 17:13:59,794 [main] DEBUG org.nuiton.wikitty.storage.solr.WikittyQueryParser$SolrQParser - Query parse : ( ( AgentSkill.agent_w:d2f9ff2f\-a69c\-4735\-8148\-e6949bac487a AND ( *:* - ( *:* - *:* ) ) ) AND #extensions:AgentSkill )
la partie Not de la requête semble être retranscrite comme ceci : ( *:* - ( *:* - *:* ) ) :(
c'est bizarre, normalement d'apres le code, ca devrait plutot sortir: ( ( AgentSkill.agent_w:d2f9ff2f\-a69c\-4735\-8148\-e6949bac487a AND ( *:* - WikittyAuthorisation.reader_w:(id1 OR id2 OR id3)) ) et surtout dans ta requete solr on ne vois pas du tout de wikittyAuthorisation, tu es sur d'avoir mis la bonne requete dans le mail ? -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com