Thanks for you reply Glen

But I saw this solution before.

And as  I said before, moving  is very often operation and storing
full path can cost additional unwanted operations and therefore
it's not a desirable solution.

Sergey Kabashnyuk
eXo Platform SAS

There are a number of ways to do this. Here is one:
Lose the parentid field (unless you have other reasons to keep it).
Add a field fullName, and a field called depth :

doc1
fullName: state
depth: 0

doc2
fullName: state/department
depth:1

doc3
fullName: state/department/Boston
depth: 2

doc4
fullName: state/department/Opera
depth: 2

doc4
fullName: state/Chicago
depth: 1

doc6
fullName: state/department/Opera/November
depth: 3

1. Same path, for example: /state/department/Boston – return doc3
query: fullName:+/state/department/Boston

2. Child of the path,  for example: /state/department – return doc3,doc4
query: fullName:+/state/department depth:+"1"

3. All childs of the path for example: /state/department - return doc3,doc4,doc6
query: fullName:+/state/department/

Is this what you need?
Depending on your use cases, there may be better ways of implementing this.

As this is not a relational db, we are not concerned (hopefully) with
the replicated information in the fullName field.

thanks,

Glen

2008/8/7 Sergey Kabashnyuk <[EMAIL PROTECTED]>:
Hello
I have  such  document   structure
doc1
    id       - 1
    parentid - 0
    name  -    state
doc2
    id       - 2
    parentid - 1
    name     - department
doc3
    id       - 3
    parentid - 2
    name     – Boston
doc4
    id       - 4
    parentid - 2
    name     – Opera
doc5
    id       – 5
    parentid – 1
    name     - Chicago
doc6
    id       - 6
    parentid - 4
    name     – November

All document a linked by parentid = id – of parent document.
By this link can be retrieved the full path of document,
for example:
doc3-/state/department/Boston
Doc5 - /state/Chicago


I want to implement search by path
1. Same path, for example: /state/department/Boston – return doc3
2. Child of the path,  for example: /state/department – return doc3,doc4
3. All childs of the path for example: /state/department - return
doc3,doc4,doc6

I need to advice how the best way it can be implemented?

Moving  is very often operation and storing full path can cost with
additional unwanted operations and therefore it's not a desirable solution

Sergey Kabashnyuk
eXo Platform SAS

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]








--
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to