Expand my Community achievements bar.

July 31st AEM Gems Webinar: Elevate your AEM development to master the integration of private GitHub repositories within AEM Cloud Manager.
SOLVED

Adobe CQ Lucene Based Search ??

Avatar

Level 2

Hi Eveyone,

  Adobe doc says its using Lucene Based Search. I have few questions on that ->

1. No API(CQ foundation search API)/Jackrabbit API seems to call Lucence API internally within source code.

2. Foundation search uses XPath query "/jcr:root[rep:spellcheck('jackrabit')]/(rep:spellcheck() for spell checking. My understanding is this XPath query internally calls src/main/java/org/apache/jackrabbit/core/query/lucene/spell/LuceneSpellChecker.java which basically search within the index created via workspace content. Pls correct me if I am wrong.Since this is based on workspace content "did you mean" functionality which uses a jackrabbit spell checked implementation returns different suggestion String for different environments with different content.

3. Is there any provision for implementing custom dictionary with the default search implementation CQ Provides ? My understanding is no.

4.  I believe Adobe search and Promote has a provision for using custom dictionary. How about "Did you mean" feature it provides ?

5. Is there any provision for configuring custom wrapper on the default search implementation provided by CQ ? My understanding is no.

Would really appreciate if you could throw your valuable knowledge and experiences to the points mentioned above. Look forward to your inputs.

Thanks
Sanjoy

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Hi Sanjoy,

basically Lucene is an implementation detail of the JCR query engine, and therefor only a very limited number of Lucene features is or can be used. There is also no way to bypass JCR API and access the Lucene API directly.

But it's technically possible to locate the Lucene libraries and files in the OSGI bundles, and rewrap them with different settings. I say "technical", because you would need to retest, that all features of AEM are still working after your change. And then you will have the question of official Adobe support.

So, if you want to use sophisticated enduser-search features, I would rather advice you to use an external search engine (like Solr), and feed your content there, and run your specific searches there as well. Then you don't need to use the JCR query engine anymore to do your search.

Jörg

View solution in original post

2 Replies

Avatar

Correct answer by
Employee Advisor

Hi Sanjoy,

basically Lucene is an implementation detail of the JCR query engine, and therefor only a very limited number of Lucene features is or can be used. There is also no way to bypass JCR API and access the Lucene API directly.

But it's technically possible to locate the Lucene libraries and files in the OSGI bundles, and rewrap them with different settings. I say "technical", because you would need to retest, that all features of AEM are still working after your change. And then you will have the question of official Adobe support.

So, if you want to use sophisticated enduser-search features, I would rather advice you to use an external search engine (like Solr), and feed your content there, and run your specific searches there as well. Then you don't need to use the JCR query engine anymore to do your search.

Jörg

Avatar

Level 2

Hi Jorg,

 Thanks for the reply. that was helpful. I have few more questions for you - >

1. If I want to use external search engine like Solr or even I want to have my custom Lucene implementation as a CQ service , Whats your take in managing indexes and custom dictionary ?

2. Other question I had is does Adobe Search and Promote also uses JCR for the search ? I saw in their video that they have a provision of using custom dictionary. So does it mean the search looks for keywords with the CRX content and also within the dictionary ?

 

Thanks
Sanjoy