Hi Torgeir,

Sorry for the delay here as got stuck with other issues. I tried your
approach and it looks like you had a typo in your index defintion

-  .setProperty("isRegExp", true)
+  .setProperty("isRegexp", true)
  .setProperty("nodeScopeIndex", true);

I tried to create a standalone example which you can give a try to see
lucene index in action [1]

Let me know if you still face any issue

Chetan Mehrotra
[1] https://gist.github.com/chetanmeh/c1ccc4fa588ed1af467b


On Wed, Feb 25, 2015 at 7:26 PM, Torgeir Veimo <[email protected]> wrote:
> Sorted out my lucene version issues, so not getting that exception any
> more, but still not getting any query results. Still seeing multiple
> of these in the logs;
>
> 23:55:14,288 TRACE lucene.IndexDefinition.collectIndexRules() - line
> 519 [0:0:0:0:0:0:0:1] - Found rule 'IndexRule: ka:asset' for NodeType
> 'ka:asset'
> 23:55:14,288 TRACE lucene.IndexDefinition.collectIndexRules() - line
> 535 [0:0:0:0:0:0:0:1] - Registering rule 'IndexRule: ka:asset' for
> name 'ka:asset'
>
> On 25 February 2015 at 16:49, Torgeir Veimo <[email protected]> wrote:
>> I tried without the async: async property on the lucene index, on an
>> empty repository, and am seeing an exception.
>>
>> Any idea on how I can try to find the cause of this?
>>
>> I assume if I tried to run with the lucene index on disk instead of in
>> the segment store, I might avoid this, but the documentation doesn't
>> really outline how to do this in much detail.
>>
>> 16:44:09,437 INFO  index.IndexUpdate.enter() - line 110 [] -
>> Reindexing will be performed for following indexes:
>> [/oak:index/ka:owner, /oak:index/positionref, /oak:index/targetId,
>> /oak:index/uuid, /oak:index/ka:id, /oak:index/mail,
>> /oak:index/ka:tags, /oak:index/active, /oak:index/ka:applicationState,
>> /oak:index/parentTargetId, /oak:index/reference, /oak:index/ka:uid,
>> /oak:index/ka:rememberme, /oak:index/ka:state, /oak:index/ka:serial,
>> /oak:index/ka:assetType, /oak:index/lucene, /oak:index/ka:series,
>> /oak:index/ka:principal, /oak:index/affiliation, /oak:index/ka:expire,
>> /oak:index/companyref, /oak:index/title, /oak:index/lastCommentDate,
>> /oak:index/ka:subscriptionFrequency, /oak:index/nodetype]
>> 16:44:09,547 WARN  support.AbstractApplicationContext.refresh() - line
>> 486 [] - Exception encountered during context initialization -
>> cancelling refresh attempt
>> org.springframework.beans.factory.BeanCreationException: Error
>> creating bean with name 'assetOwnerPermission': Injection of autowired
>> dependencies failed; nested exception is
>> org.springframework.beans.factory.BeanCreationException: Could not
>> autowire field: no.karriere.content.dao.AssetRepository
>> no.karriere.content.authorization.permissions.AbstractPermission.assetRepository;
>> nested exception is
>> org.springframework.beans.factory.BeanCreationException: Error
>> creating bean with name 'assetRepository': Injection of autowired
>> dependencies failed; nested exception is
>> org.springframework.beans.factory.BeanCreationException: Could not
>> autowire field: no.karriere.content.dao.jcr.MediaHelper
>> no.karriere.content.dao.jcr.JcrAssetRepository.mediaHelper; nested
>> exception is org.springframework.beans.factory.BeanCreationException:
>> Error creating bean with name 'mediaHelper': Injection of autowired
>> dependencies failed; nested exception is
>> org.springframework.beans.factory.BeanCreationException: Could not
>> autowire field:
>> no.karriere.content.services.repository.RepositoryService
>> no.karriere.content.dao.jcr.MediaHelper.repositoryService; nested
>> exception is org.springframework.beans.factory.BeanCreationException:
>> Error creating bean with name 'repositoryService': Injection of
>> autowired dependencies failed; nested exception is
>> org.springframework.beans.factory.BeanCreationException: Could not
>> autowire field: javax.jcr.Repository
>> no.karriere.content.services.repository.RepositoryService.oakRepository;
>> nested exception is
>> org.springframework.beans.factory.BeanCreationException: Error
>> creating bean with name 'getRepository' defined in class path resource
>> [no/karriere/content/dao/jcr/repository/RepositoryConfiguration.class]:
>> Instantiation of bean failed; nested exception is
>> org.springframework.beans.factory.BeanDefinitionStoreException:
>> Factory method [public javax.jcr.Repository
>> no.karriere.content.dao.jcr.repository.RepositoryConfiguration.getRepository()
>> throws no.karriere.content.exception.ContentException] threw
>> exception; nested exception is java.lang.AbstractMethodError:
>> org.apache.lucene.store.IndexOutput.getChecksum()J
>> at 
>> org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:298)
>> at 
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1148)
>> at 
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>> at 
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
>>
>> [.... lots of nested spring stuff]
>>
>> Caused by: org.springframework.beans.factory.BeanDefinitionStoreException:
>> Factory method [public javax.jcr.Repository
>> no.karriere.content.dao.jcr.repository.RepositoryConfiguration.getRepository()
>> throws no.karriere.content.exception.ContentException] threw
>> exception; nested exception is java.lang.AbstractMethodError:
>> org.apache.lucene.store.IndexOutput.getChecksum()J
>> at 
>> org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:181)
>> at 
>> org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:592)
>>
>> ... 79 more
>>
>>
>> Caused by: java.lang.AbstractMethodError:
>> org.apache.lucene.store.IndexOutput.getChecksum()J
>> at org.apache.lucene.codecs.CodecUtil.writeFooter(CodecUtil.java:186)
>> at org.apache.lucene.index.SegmentInfos.finishCommit(SegmentInfos.java:1054)
>> at org.apache.lucene.index.IndexWriter.finishCommit(IndexWriter.java:3130)
>> at org.apache.lucene.index.IndexWriter.commitInternal(IndexWriter.java:3111)
>> at org.apache.lucene.index.IndexWriter.shutdown(IndexWriter.java:913)
>> at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:984)
>> at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:954)
>> at 
>> org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorContext.closeWriter(LuceneIndexEditorContext.java:151)
>> at 
>> org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditor.leave(LuceneIndexEditor.java:191)
>> at 
>> org.apache.jackrabbit.oak.spi.commit.CompositeEditor.leave(CompositeEditor.java:74)
>> at 
>> org.apache.jackrabbit.oak.spi.commit.VisibleEditor.leave(VisibleEditor.java:63)
>> at 
>> org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:56)
>> at 
>> org.apache.jackrabbit.oak.plugins.index.IndexUpdate.enter(IndexUpdate.java:116)
>> at 
>> org.apache.jackrabbit.oak.spi.commit.VisibleEditor.enter(VisibleEditor.java:57)
>> at 
>> org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:49)
>> at 
>> org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:54)
>> at 
>> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.prepare(SegmentNodeStore.java:397)
>> at 
>> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.optimisticMerge(SegmentNodeStore.java:428)
>> at 
>> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore$Commit.execute(SegmentNodeStore.java:484)
>> at 
>> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore.merge(SegmentNodeStore.java:162)
>> at 
>> org.apache.jackrabbit.oak.spi.lifecycle.OakInitializer.initialize(OakInitializer.java:45)
>> at org.apache.jackrabbit.oak.Oak.createContentRepository(Oak.java:518)
>> at org.apache.jackrabbit.oak.jcr.Jcr.createRepository(Jcr.java:202)
>> at 
>> no.karriere.content.dao.jcr.repository.RepositoryConfiguration.getRepository(RepositoryConfiguration.java:93)
>>
>>
>>
>>
>> On 25 February 2015 at 16:41, Torgeir Veimo <[email protected]> wrote:
>>> Thank you for your reply!
>>>
>>> Setting the :childOrder helps reduce the warning logs. I am still
>>> getting these log entries a lot;
>>>
>>> 16:38:00,016 TRACE lucene.IndexDefinition.collectIndexRules() - line
>>> 519 [] - Found rule 'IndexRule: ka:asset' for NodeType 'ka:asset'
>>> 16:38:00,016 TRACE lucene.IndexDefinition.collectIndexRules() - line
>>> 535 [] - Registering rule 'IndexRule: ka:asset' for name 'ka:asset'
>>>
>>> I am unsure why these keeps getting repeated, could it be that the
>>> index configuration fails, and retries the next time I make a query?
>>>
>>> I am now using this code to configure;
>>>
>>> NodeBuilder index = IndexUtils.getOrCreateOakIndex(builder);
>>> index.child("lucene")
>>>     .setProperty("jcr:primaryType", "oak:QueryIndexDefinition", Type.NAME)
>>>     .setProperty("compatVersion", "2")
>>>     .setProperty("type", "lucene")
>>>     .setProperty("async", "async")
>>>     .setProperty("reindex", true)
>>>     .child("indexRules")
>>>     .setProperty(":childOrder", ImmutableSet.of("ka:asset"), Type.STRINGS)
>>>         .child("ka:asset")
>>>             .setProperty("jcr:primaryType", "nt:unstructured", Type.NAME)
>>>             .child("properties")
>>>                 .setProperty("jcr:primaryType", "nt:unstructured", 
>>> Type.NAME)
>>>                 .setProperty(":childOrder",
>>> ImmutableSet.of("allProps"), Type.STRINGS)
>>>                 .child("allProps")
>>>                     .setProperty("jcr:primaryType", "nt:unstructured",
>>> Type.NAME)
>>>                     .setProperty("name", ".*")
>>>                     .setProperty("isRegExp", true)
>>>                     .setProperty("nodeScopeIndex", true);
>>>
>>> select * from [ka:asset] where lower(*) like '%admin%'
>>>
>>> yields two entries
>>>
>>> select * from [ka:asset] where contains(*,'admin')
>>>
>>> yields none.
>>>
>>> I am wondering if the setup of the repository is correct? I assume
>>> that with the default LuceneIndexProvider() constructor, it will use
>>> lucene indexes stored as segments in the segment store?
>>>
>>>
>>> On 25 February 2015 at 10:46, Chetan Mehrotra <[email protected]> 
>>> wrote:
>>>> Hi Torgeir,
>>>>
>>>> By default the Lucene index would be updated every 5 sec. So are you
>>>> performing query immediately after adding the content? If thats the
>>>> case you can remove setting "async" property at least for your
>>>> testcase to get Lucene index triggered immediately after commit
>>>>
>>>>> 21:58:51,075 WARN  lucene.IndexDefinition.collectIndexRules() - line
>>>> 505 [0:0:0:0:0:0:0:1] - IndexRule node does not have orderable
>>>> children in [Lucene Index : genericlucene(/oak:index/lucene)]
>>>> 21:58:51,076 WARN
>>>>
>>>> You can create the index definition via JCR API. Basically the
>>>> orderable children are detected via presence of ':childOrder' hidden
>>>> property. When you set a nodetype to nt:unstructured then oak-jcr
>>>> would set this property automatically to record the ordering. However
>>>> if you do it via NodeStore API then that has to be done manually.
>>>>
>>>> Chetan Mehrotra
>>>
>>>
>>>
>>> --
>>> -Tor
>>
>>
>>
>> --
>> -Tor
>
>
>
> --
> -Tor

Reply via email to