2014-11-27 2 views
1

Мы используем Neo4j в нашем текущем проекте и хотите использовать Lucene поисковой facetet функции так обновление до Lucene 4 необходимо ...как отключить расширение Lucene ядра в Neo4j

Когда я исключаю «Neo4j» s зависимость к «Neo4j-Lucene индекс» в моем Maven POM я получаю исключение при попытке запуска: ГРАФОВОЙ БАЗЫ ДАННЫХ

java.lang.RuntimeException: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, 
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:351) 
at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:56) 
at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:90) 
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:199) 

. 
. 
. 

Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component '[email protected]' was successfully initialized, but failed to start. Please see attached cause exception. 
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:513) 
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) 
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:328) 
... 35 more 
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component '[email protected]' was successfully initialized, but failed to start. Please see attached cause exception. 
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:513) 
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) 
at org.neo4j.kernel.impl.transaction.XaDataSourceManager.start(XaDataSourceManager.java:164) 
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:507) 
... 37 more 
Caused by: java.lang.IllegalArgumentException: No schema index provider org.neo4j.kernel.api.index.SchemaIndexProvider found. Kernel extensions available on classpath: 

ли Neo4j работать без Lucene?

с нетерпением жду ваших ответов ..

+0

Не могли бы вы принять ответ Стефана? Thx :) –

+0

Я сделал некоторый рефакторинг исходного модуля neo4j-lucene-index, чтобы он работал с lucene 4.10.2. Код можно найти здесь: https://github.com/TekTimmy/neo4j-lucene4-index – TekTimmy

ответ

2

Не уверен на 100% здесь. Когда не будет указана neo4j-lucene-index в пути к классам, расширение ядра не будет загружено. Neo4j будет работать в этом случае, за исключением того, что все обращения к схеме или ручным индексам будут вызывать IllegalArgumentException с no index provider found.

Как правило, в Neo4j вы используете индексы для поиска начальных точек для обходов. Без индексации каждый запрос будет глобальным запросом, если у вас уже нет ссылочной точки.

Я думаю, что лучший подход - использовать Neo4j в качестве сервера, тогда ваше приложение может использовать любую версию Lucene независимо. Если по какой-либо причине встроенный режим является обязательным, вы можете применить разделение загрузчика классов, как описано в разделе http://blog.markturansky.com/archives/21, чтобы иметь несколько версий lucene в одном приложении. Однако это непросто, поэтому я рекомендую использовать сервер Neo4j.

+0

Привет, Стефан, я добавил сообщение об исключении в тело вопросов, которое бросается, когда я запускаю базу данных graph без lucene-index dependecy. Кажется, что это действительно не работает без него. Я попытаюсь скомпилировать мою собственную версию модуля lucene-index с lucene 4. – TekTimmy

+0

Вы правы, если у вас нет провайдера индекса схемы, Neo4j не запустится. Однако вы можете написать собственный поставщик индекса схемы. Майкл написал об этом по адресу http://jexp.de/blog/2013/05/on-creating-a-mapdb-schema-index-provider-for-neo4j-2-0/. –

+0

Ничего себе отличная новость! Спасибо за ссылку! – TekTimmy

Смежные вопросы