jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ard Schrijvers" <a.schrijv...@hippo.nl>
Subject RE: Querying on multi-value properties
Date Tue, 18 Dec 2007 09:05:30 GMT

> Isn't //*[@author='stephen king'] a case-sensitive search?  

You have fn:lower-case 

> Besides if I had a node with an author value as "stephen 
> edwin king", this query wouldn't work.  Right?

True, but I did not know you where having all kinds of combinations of
one and the same person. You can use contains and 'and' the different
terms, ie, 

"//*[jcr:contains(.,'stephen') and jcr:contains(.,'king')]"

Otherwise, you could look at if the synonymprovider is useable for
multiple terms. If not, and you really want to make it the way you want,
you can always add your own AuthorAnalyzer (combination of
KeywordAnalyzer and SynonymAnalyzer) and then you can use 

//*[@author='stephen edward king']
//*[@author='Stephen Edward King']
//*[@author='stephen king']
//*[@author='Stephen King']

depending on how you organize your analyzer. Not really trivial the
first time, but makes you understand lucene analyzing a but, and how to
optimize searches you want to do. 

Regards Ard

> 
> On Dec 17, 2007 7:03 PM, Ard Schrijvers <a.schrijvers@hippo.nl> wrote:
> 
> > Hello,
> >
> > //*[@author='stephen king'] should do it
> >
> > Regards Ard
> >
> > >
> > > This is the node structure I have:
> > > bookType:
> > > - authors (multiple)
> > >
> > > I may have around 1000 nodes of bookType.  Now, I want to 
> find all 
> > > nodes of type bookType that have "stephen king" in the property 
> > > author.
> > >
> > > A simple jcr:contains query with like this - 
> jcr:contains(@authors, 
> > > 'stephen
> > > king') - doesn't work as I would want it to.  The reason 
> being, if 
> > > by chance, I have a node that has "stephen" in one of the author 
> > > values, and "king" in another value of property author, 
> this node is 
> > > returned as a match.  But I want _only_ those nodes that have 
> > > "stephen" and "king" in the same value of the author property.
> > >
> > > Example:
> > > nodeA:
> > > - authors {"stephen king", "robert jordan"}
> > >
> > > nodeB:
> > > - authors {"good stephen", "royal king"}
> > >
> > > On running the query, I get both nodeA and nodeB.  But I 
> want only 
> > > nodeA.
> > > Is there any way of doing
> > > this?
> > >
> > > Thanks,
> > > Sridhar
> > >
> >
> 

Mime
View raw message