Hi Phillip,
Phillip Rhodes wrote:
I have an application (http://stitches.authsum.com) that is storing objects
of different types into jackrabbit.
For example, I have the following types of objects: ImageGallery,
ImageContent, BinaryContent, HtmlContent, TextileContent
Currently, my tree is in the format of: //Root/Object Type/Object name
Example Data: /Root/ImageGallery/Fun in the sun /Root/ImageGallery/Who knows
/Root/ImageContent/Sun.jpg /Root/ImageContent/horse.gif
/Root/BinaryContent/horse.pdf /Root/BinaryContent/people.pdf
/Root/HtmlContent/horse.html /Root/HtmlContent/people.html
/Root/TextileContent/horse.html /Root/TextileContent/people.html
My question in all this is that I need to implement a "findContentByName"
method that will return the Node given by object name of the node. While I
could do an xpath query to find a Node by this name, I am concerned about
performance with this type of xpath query.
such queries should be relatively cheap, because currently you can only search
for an exact name match. matching the name with a pattern is currently not
possible.
1) Is the xpath query translated to a lucene query behind the scenes?
yes, it is.
2) Would you recommend a different structure to store my content? Should I make
a wide flat structure of all my content and store the type as an attribute?
I read that it is better to do deep structures (rather than wide), but is
this the best design?
I think this depends on how you will access your content. E.g. if you have end
users that will access the content I would rather introduce some kind of folder
nodes that allow them to structure the content in an intuitive way.
In general having too many children under a certain node (>10000) will influence
performance when you add or remove child nodes. But as I mentioned above if you
have users that interact with the content you wouldn't want to have that many
child nodes anyway, but rather structure them in a hierarchy.
regards
marcel