You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Marcel Reutegger <ma...@gmx.net> on 2006/07/03 12:03:26 UTC

Re: how to verify that text is being indexed?

Torgeir Veimo wrote:
> I have trouble doing some queries, eg
> 
> /jcr:root//element(*,nt:resource)[jcr:contains(.,'t')]

are you sure the xml file contains the word 't'? the jcr:contains 
function will not find words that just contain the letter 't'.

> where the result come up empty. The text has content type text/xml. How 
> can I verify that those nodes i save indeed are being indexed?

Unfortunately there is not much logging that you can turn on. This 
leaves you with two options:
- debug jackrabbit (method: NodeIndexer.addBinaryValue())
- inspect the lucene index (e.g. using Luke: 
http://www.getopt.org/luke/luke.jnlp)

regards
  marcel

Re: how to verify that text is being indexed?

Posted by Marcel Reutegger <ma...@gmx.net>.
Torgeir Veimo wrote:
> Marcel Reutegger wrote:
>> Torgeir Veimo wrote:
>>> Inspection using Luke sounds like a good option. However, it turned 
>>> out to be a spelling error being introduced in the text filter 
>>> classes "MsreplaceTextFilter", so an exception was being thrown that 
>>> disabled text indexing..
>>
>> hmm, do you mean text filtering was disabled completely? This is not 
>> the intended behaviour. Jackrabbit should only issue a warning message 
>> for the misspelled text filter and proceed initializing the next one. 
>> Can you confirm that none of the text filters were initialized?
> 
> Here's the exception:
> 
> 00:05:04,028 WARN  SearchIndex  - Invalid TextFilter class: 
> org.apache.jackrabbit.core.query.MsreplaceTextFilter
> java.lang.ClassNotFoundException: 
> org.apache.jackrabbit.core.query.MsreplaceTextFilter
>         at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352) 
> 
>         at 
> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198) 
> 
>         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
>         at java.lang.Class.forName0(Native Method)
>         at java.lang.Class.forName(Class.java:164)
>         at 
> org.apache.jackrabbit.core.query.lucene.SearchIndex.setTextFilterClasses(SearchIndex.java:739) 

This is what I expected. Jackrabbit issues a warn message, but will 
continue with the initialization of the remaining text filters.

regards
  marcel

Re: how to verify that text is being indexed?

Posted by Torgeir Veimo <to...@pobox.com>.
Marcel Reutegger wrote:
> Torgeir Veimo wrote:
>> Inspection using Luke sounds like a good option. However, it turned 
>> out to be a spelling error being introduced in the text filter classes 
>> "MsreplaceTextFilter", so an exception was being thrown that disabled 
>> text indexing..
> 
> hmm, do you mean text filtering was disabled completely? This is not the 
> intended behaviour. Jackrabbit should only issue a warning message for 
> the misspelled text filter and proceed initializing the next one. Can 
> you confirm that none of the text filters were initialized?

Here's the exception:

00:05:04,028 WARN  SearchIndex  - Invalid TextFilter class: 
org.apache.jackrabbit.core.query.MsreplaceTextFilter
java.lang.ClassNotFoundException: 
org.apache.jackrabbit.core.query.MsreplaceTextFilter
         at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1352)
         at 
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
         at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Class.java:164)
         at 
org.apache.jackrabbit.core.query.lucene.SearchIndex.setTextFilterClasses(SearchIndex.java:739)
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at org.apache.commons.collections.BeanMap.put(BeanMap.java:367)
         at 
org.apache.jackrabbit.core.config.BeanConfig.newInstance(BeanConfig.java:96)
         at 
org.apache.jackrabbit.core.SearchManager.initializeQueryHandler(SearchManager.java:525)
         at 
org.apache.jackrabbit.core.SearchManager.<init>(SearchManager.java:273)
         at 
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.getSearchManager(RepositoryImpl.java:1434)
         at 
org.apache.jackrabbit.core.RepositoryImpl.initWorkspace(RepositoryImpl.java:540)
         at 
org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:245)
         at 
org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:484)
         at 
org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:241)
         at 
org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:261)

It might very well be that my understanding of how the text indexing 
works was flawed and that I just searched the wrong way.

-- 
-Torgeir

Re: how to verify that text is being indexed?

Posted by Marcel Reutegger <ma...@gmx.net>.
Torgeir Veimo wrote:
> Inspection using Luke sounds like a good option. However, it turned out 
> to be a spelling error being introduced in the text filter classes 
> "MsreplaceTextFilter", so an exception was being thrown that disabled 
> text indexing..

hmm, do you mean text filtering was disabled completely? This is not the 
intended behaviour. Jackrabbit should only issue a warning message for 
the misspelled text filter and proceed initializing the next one. Can 
you confirm that none of the text filters were initialized?

regards
  marcel

Re: how to verify that text is being indexed?

Posted by Torgeir Veimo <to...@pobox.com>.
Marcel Reutegger wrote:
> Torgeir Veimo wrote:
>> I have trouble doing some queries, eg
>>
>> /jcr:root//element(*,nt:resource)[jcr:contains(.,'t')]
> 
> are you sure the xml file contains the word 't'? the jcr:contains 
> function will not find words that just contain the letter 't'.
> 
>> where the result come up empty. The text has content type text/xml. 
>> How can I verify that those nodes i save indeed are being indexed?
> 
> Unfortunately there is not much logging that you can turn on. This 
> leaves you with two options:
> - debug jackrabbit (method: NodeIndexer.addBinaryValue())
> - inspect the lucene index (e.g. using Luke: 
> http://www.getopt.org/luke/luke.jnlp)

Inspection using Luke sounds like a good option. However, it turned out 
to be a spelling error being introduced in the text filter classes 
"MsreplaceTextFilter", so an exception was being thrown that disabled 
text indexing..
-- 
-Torgeir