What is the best practice for implementing tags with Neo4j and rails? -


have neo4j based rails app , want implement tags. not sure how go it. thinking of creating new model nodes "tag" label, seemed kind of overkill. there approach https://github.com/mbleigh/acts-as-taggable-on neo4j based app?

it depends on want on performance considerations ;)

creating tag model isn't overkill, make sure merge tags whenever create them make sure don't create duplicates. can use neo4j's graph traversal abilities jump tags other objects , vice versa, more complicated queries making recommendations between objects according how many tags share / don't share.

if want have basic list of strings, neo4j supports having array properties on nodes , relationships. can use declaring property on model this:

class modelclass   include neo4j::activenode    property :tags end 

the issue can't index based on arrays (i think that's planned future). if performance big concern rather showing list of tags, tag nodes might best bet.

also, best performance in case lot of tags, you'll want index tag name/text/whatever-you-call-that-property. there few ways that:

class tag   include neo4j::activenode    property :name, index: :exact end 

or can use neo4j constraint ensure no 2 nodes have same name:

class tag   include neo4j::activenode    property :name, constraint: :unique end 

constraints automatically create indexes under cover performance.

lastly, if you'd rather tag model not use default uuid column uniquely identifying tags , instead use name do:

class tag   include neo4j::activenode    id_property :name end 

that creates constraint name property.


Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -