[ 
http://jira.nuxeo.org/browse/NXP-1348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=45015#action_45015
 ] 

Stéfane Fermigier commented on NXP-1348:
----------------------------------------

Do we still need this ?

> Implement where clause joining of resources
> -------------------------------------------
>
>                 Key: NXP-1348
>                 URL: http://jira.nuxeo.org/browse/NXP-1348
>             Project: Nuxeo Enterprise Platform
>          Issue Type: Task
>          Components: Query / Search
>            Reporter: Georges Racinet
>            Assignee: Julien Anguenot
>             Fix For: 5.2 M3
>
>
> We now need to have the Search Service handle some cross-searches in a 
> transparent way.
> All resource/field names and values in this (herm) specification are provided 
> as samples and will depend on applicative context and/or configuration in 
> real-life cases/
> principle: for now, the search service is a document centric engine: search 
> queries are primarily about documents and return documents.
> first consequence: we don't need to change the SELECT and FROM clauses 
> behaviours, everything will happen in the WHERE clause.
> We'll have new queriable resources, that aren't directly about documents (as 
> opposed to the existing schema and doc. builtin resources)
> Example: in relations, there is a resource for each graph. They have to be 
> thought of as separate tables, so of course one can write WHERE fragments 
> about them, like this:
> (1)   ... AND relationGraph:predicateUri="http://test.com/dependson"; ...
>    this adds the condition for matching relations from relationGraph that the 
> predicate (identified by its URI)
> The join (document binding) is made like this:
> (2)   ... AND ecm:qid=relationGraph:object ...                                
>    
>       of course both sides have to be directly comparable.
>     which says that the "object" field (also a builtin relation field) has to 
> be equal to the value of ecm:id and therefore will                      
> The above document-centric principle dictates that:
>       - without a join, the non-doc clauses are ignored
>       - without explicit pure document where clauses, the referred document 
> is the returned document. Example:
> (3)           SELECT * FROM Workspace WHERE relationGaph:subject=ecm:qid
>       this returns all documents whose type extends Workspace that are 
> subject of a relation from "relationGraph".
> Simplicity and lack of time dictates that top-level branches in the WHERE 
> clause logical tree are either
>       - join clauses. These have to stay as simple as in example (2) above
>       - pure in the sense that they deal about one single type of resource 
> (documentary, relation, audit). These can be complex boolean clauses as 
> before.
> Note: n-fold joins are supported, provided that they make up a star shaped 
> graph centered on the document. In other words: no transversal join, no 
> isolated  non-doc resources.  Random behaviour can happen otherwise. 
> Implementation detail is left to the backend. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.nuxeo.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to