2013-02-10 2 views
1

Я экспериментирую/узнаю данные весны neo4j. У меня очень простое приложение, в котором хранятся твиты из твиттера. См. Ниже фрагмент.индексирование коллекции данные весны neo4j

@NodeEntity 
public class Tweet { 

    @GraphId 
    private Long id; 

    private String tweet; 

    @Indexed 
    Set<String> hashtags; 

Вопрос заключается в том, что это лучший способ для хранения хэш-тегов, так что я могу быстро получить в твиттере, к которому они принадлежат? То, что я могу думать, либо использует @Indexed над Set, либо фактически создает отдельный Hashtag NodeEntity и устанавливает связь между ним и твитом. Я не могу найти документацию по индексированию коллекции в NodeEntity, поэтому я не уверен, что индекс создан на заданном объекте или каждая строка в индексе индексируется. Любые предложения были бы хорошими. Благодарю.

+0

см. Также пример https://github.com/jexp/sdn-twitter-graph –

ответ

5

Когда вы делаете @Indexed, он попадает в систему индексирования Neo4j, которая является Lucene. Lucene фактически не индексирует коллекции, а представляет собой строковое представление коллекции.

Что касается вашей модели данных, я бы пошел с созданием узла HashTag, к которому подключался бы каждый твит. В конечном итоге вы столкнетесь с проблемой Dense Node для более распространенных тэгов Hash, но во всем этом вы сможете делать больше аналитики, например, получать все твиты с одним и тем же тегом Hash.

+0

HashTag будет '@ NodeEntity' тоже, на что вы ссылаетесь. Set теги; SDN затем создает отношения соответственно. –