How to store tree data in a Lucene/Solr/Elasticsearch index or a NoSQL db?

前端 未结 4 1428
别跟我提以往
别跟我提以往 2020-12-03 05:26

Say instead of documents I have small trees that I need to store in a Lucene index. How do I go about doing that?

An example node in the tree:

class          


        
4条回答
  •  我在风中等你
    2020-12-03 06:16

    Another approach is to store a representation of the current node's location in the tree. For example, the 17th leaf of the 3rd 2nd-level node of the 1st 1st-level node of the 14th tree would be represented as 014.001.003.017.

    Assuming 'treepath' is the field name of the tree location, you would query on 'treepath:014*' to find all nodes and leaves in the 14th tree. Similarly, to find all of the children of the 14th tree you would query on 'treepath:014.*'.

    The major problem with this approach is that moving branches around requires re-ordering every branch after the branch that was moved. If your trees are relatively static, that may only be a minor problem in practice.

    (I've seen this approach called either a 'path enumeration' or a 'Dewey Decimal' representation.)

提交回复
热议问题