Hello,

> Prakash Reddy wrote:

> I can't do without jcr:like because I need to get all the 
> nodes whose property's value contains a given word.
> What are my other alternatives?

A given word in the text of a property....you should really use
jcr:contains in that case. Can't you use jcr:contains?

-Ard

> 
> Thanks in advance.
> 
> Regards,
> Prakash
> 
> Ard Schrijvers wrote:
> > Hello,
> >
> > It may work for you at the moment, but a query like 
> > '//*[jcr:like(fn:lower-case(@propertyName), '%article%')]' is
> > *extremely* inefficient. using the jcr:like in combination with a 
> > prefix '%' will most certainly lead to very slow results when the 
> > number of hits grows (even for quite small repositories). If you 
> > really need it, and the number of nodes will grow, you 
> should really 
> > look for a different solution IMO (like using a nodetype which you 
> > search for)
> >
> > Regards Ard
> >
> >   
> >> Alessandro,
> >>
> >> Thanks for explaining. Now I understood my mistake.
> >> The mistake I did was I had uppercase letters in the pattern. 
> >> Thats why I was not getting the expected results.
> >> After I changed everything to lower case in the pattern, 
> everything 
> >> works fine.
> >>
> >> Thank you and others once again for helping me out.
> >>
> >> Regards,
> >> Prakash
> >>
> >>
> >> Alessandro Bologna wrote:
> >>     
> >>> Prakash,
> >>>
> >>> maybe I am still not understanding, but 
> >>> //*[jcr:like(fn:lower-case(@propertyName), '%article%')] should 
> >>> actually do what you want. The property values are
> >>>       
> >> converted to lower
> >>     
> >>> case ("MyArtcilexxx", "MyARTicleyyy" => "myartcilexxx",
> >>> "myarticleyyy") by the lower-case function, and they are
> >>>       
> >> compared to
> >>     
> >>> the pattern that happens to have lower case characters
> >>>       
> >> there only (so
> >>     
> >>> you should use lowercase letters on the pattern, of course).
> >>>
> >>> Did you try it?
> >>>
> >>> Alessandro
> >>>
> >>>
> >>> Prakash Reddy K. L. V. wrote:
> >>>       
> >>>> Alessandro,
> >>>>
> >>>> This does not help. fn:lower-case will just convert the 
> letters to 
> >>>> lower case.
> >>>> May be I was not clear in my earlier mail.
> >>>> I want to retrieve all nodes whose property has values like 
> >>>> "MyArtcilexxx", "MyARTicleyyy", "artcilezzzz" and so on.
> >>>> I want something like String.equalsIgnoreCase("article") .
> >>>>
> >>>> Regards,
> >>>> Prakash
> >>>>
> >>>> Alessandro Bologna wrote:
> >>>>         
> >>>>> Yes,
> >>>>> Try using //*[jcr:like(fn:lower-case(@propertyName),
> >>>>>           
> >> '%article%')]
> >>     
> >>>>> Alessandro
> >>>>>
> >>>>>
> >>>>> Prakash Reddy K. L. V. wrote:
> >>>>>           
> >>>>>> Hi Alessandro,
> >>>>>>
> >>>>>> Thanks for your response.
> >>>>>> The query //*[jcr:like(@propertyName, '%article%')]
> >>>>>>             
> >> seems to work
> >>     
> >>>>>> for me. But I have a problem here. It seems to be case 
> sensitive.
> >>>>>> Is there a way to tell jackrabbit to ignore case??
> >>>>>>
> >>>>>> Regards,
> >>>>>> Prakash
> >>>>>>
> >>>>>>
> >>>>>> Alessandro Bologna wrote:
> >>>>>>             
> >>>>>>> Hi,
> >>>>>>>
> >>>>>>> you can't search for substrings of the node name, but 
> if you do 
> >>>>>>> store the node name in a property, then you can use either 
> >>>>>>> jcr:like or jcs:contains (not just "contains", the XPATH in 
> >>>>>>> Jackrabbit doesn't support it).
> >>>>>>>
> >>>>>>> So try:
> >>>>>>>     //*[jcr:contains(@propertyName,'article')]
> >>>>>>>    or:
> >>>>>>>     //*[jcr:like(@propertyName, '%article%')]
> >>>>>>>
> >>>>>>> Further reading here
> >>>>>>> 
> http://www.theserverside.com/tt/articles/article.tss?l=JCRPract
> >>>>>>> and of course the JSR-170 specs.
> >>>>>>>
> >>>>>>> Hope it helps.
> >>>>>>> Alessandro
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>> Prakash Reddy K. L. V. wrote:
> >>>>>>>               
> >>>>>>>> Hi,
> >>>>>>>>
> >>>>>>>> I am using jackrabbit as my content repository.
> >>>>>>>> Is there a way to search for nodes whose name contains a 
> >>>>>>>> particular word using XPath?
> >>>>>>>> For example I want to search for all the nodes whose name 
> >>>>>>>> contains "article".
> >>>>>>>>
> >>>>>>>> I tried this query : /jcr:root/*article* This does not work.
> >>>>>>>>
> >>>>>>>> I also tried storing the name as property of the node
> >>>>>>>>                 
> >> and tried
> >>     
> >>>>>>>> this query :
> >>>>>>>> /jcr:root/[EMAIL PROTECTED]''article"]
> >>>>>>>> This does not even get those nodes for which the 
> value of the 
> >>>>>>>> property is "article".
> >>>>>>>>
> >>>>>>>> Is there any other way to achieve this ?
> >>>>>>>>
> >>>>>>>> Thanks,
> >>>>>>>> Prakash
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>                 
> >>     
> 
> 
> 

Reply via email to