Thanks Ard, I can use jcr:contains.
But how does it perform better than  jcr:like with respect to performance ?

Regards,
Prakash

Ard Schrijvers wrote:
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