Расширить JackRabbit или построить из Lucene? - PullRequest
2 голосов
/ 26 января 2010

Я работал над идеей сайта, общей концепцией которого является полнотекстовый поиск документов, который также позволяет оценивать пользователей на основе этих оценок. Я хотел повысить значение элемента в индексе Lucene. Но я пытаюсь выяснить, стоит ли мне расширять JackRabbit или просто строить с базы Lucene. Есть ли какой-нибудь хороший способ расширить JackRabbit таким образом и повлиять на индекс, или было бы лучше работать напрямую с Lucene?

В любом случае, я сильно склоняюсь к использованию groovy на grails либо с подключаемым модулем с возможностью поиска, либо работаю напрямую с JackRabbit. Есть ли какие-либо основные причины, по которым я должен просто придерживаться Java?

Пояснение:

Я хотел бы увеличить предмет на основе среднего пользовательского рейтинга предмета, достаточно ли открыт JackRabbit или достаточно расширяем, чтобы я мог фиксировать пользовательские рейтинги, после чего они влияют на индекс внутри JackRabbit, или это так далеко от ядра ДжекРаббит, который я должен просто собрать из Lucene?

Ответы [ 4 ]

2 голосов
/ 01 февраля 2010

Я рекомендую использовать JCR с реализацией Jackrabbit. JCR позволяет вам отделить то, что вы храните, и то, как вы храните его.

Оставаясь в рамках JCR, вы сможете легко переключаться между реализациями JCR. (Их несколько, не только у Apache.) Даже в Jackrabbit много менеджеров по сохранению, а не только Lucene. Эта гибкость полезна, когда вы хотите найти компромисс между объемом памяти и производительностью.

JCR уже включает полнотекстовый поиск и возможность поддерживать оценки пользователей. Он должен хорошо подходить для вашего проекта.

1 голос
/ 13 февраля 2010

Я бы порекомендовал вам использовать Apache Sling , он поставляется со встроенным Jackrabbit / Lucene. Большинство коммиттеров также задействованы в Jackrabbit, поэтому он спроектирован так, чтобы хорошо с ним работать - даже лучше, он спроектирован так, чтобы работать поверх него.

Одной из приятных особенностей Sling является то, что он монтирует весь JCR-репозиторий в пространство URL и предоставляет его через конечные точки REST. Таким образом, вы можете легко получить доступ к своим документам / метаданным, выполнив простой HTTP-запрос к ним. Это также позволяет вам писать свои собственные сервлеты и выставлять их как конечные точки REST. (Это чрезвычайно просто - не нужно возиться с файлами applicationContext.xml, только 1 аннотация)

Также позволяет писать jsp, esp, groovy, ...

1 голос
/ 26 января 2010

Я бы рекомендовал использовать JCR / Jackrabbit поверх Lucene по нескольким причинам:

1) Ваша структура хранилища может легко поддерживать узлы документов с дочерними узлами, которые хранят все ваши метаданные, включая владельца, оценки, пометки, комментарии и т. Д.

2) JCR идеально подходит для разработки приложений на основе документов / узлов, обеспечивая большую нагрузку на уровне инфраструктуры, не мешая при этом на уровне приложений.

1 голос
/ 26 января 2010

есть ли основные причины, по которым я должен придерживаться Java?

Не совсем. Как вы, вероятно, уже знаете, вы можете использовать любую библиотеку Java с Groovy / Grails, поэтому в Java вы ничего не можете сделать, чего не можете сделать в Groovy. Хотя, наоборот, верно и то, что, по моему опыту, для выполнения задач в Java требуется гораздо больше (шаблонного) кода.

Хотя Java значительно быстрее, чем Groovy, это не обязательно означает, что ваше приложение будет работать быстрее, если написано на Java, поскольку узким местом может быть скорее база данных, а не выполнение кода.

Что касается того, следует ли вам использовать Lucene / Searchable или JackRabbit, очень сложно сказать, не зная, чего вы можете достичь. Все, что вы сказали нам до сих пор, - это то, что вы хотите проиндексировать документы и повысить определенные позиции в индексе. Вы можете сделать то же самое с Lucene.

...