Monday, 29 July 2013

Dynamic Facet : facet when its name is not known

Dynamic Facet(facet when its name is not known):

Think a  scenario where user has to create a facet in a search and promote account, but its name is not
known when we start up the S&P configuration. So what we can do?

CQ is going to introduce dynamic facets for this task. So before this let us do a manual work around for the same.

Our requirement is quiet simple. We need a facet which we don't have their name in hand when work is done. Let us fold our sleeves and get into work.
Below are the steps for the same.

1) Define the facets in XML file.

2) Then in index connector we have to access this values to two fields called  test_facet_name,  test_facet_value through record/mapping.

3) This has now to be defined in meta data definition as text fields.Say test_facet_name, test_facet_value
4) In filtering script we need to iterate this name value pair and load the values in some name value fields like test_name1{name,value},test_name2{name,value}.....

5) Now we need to create meta data with text fields test_name1, upto how many unknown named total facets required.

6) There is a limitation in S&P, we need to contact Adobe team to raise the meta data count.

7) Then this name value is is passed to output by creating facets with names  as test_name1, test_name1 etc upto total number of facets.

8) Now display it through presentation layer.(remember to add those in transport layer too.)

Now the dynamic run time generated facets are ready. Actually these facets we are naming in run time, it was created already during configuration.

Wednesday, 12 June 2013

IntelliJ IDEA 11 and CQ5

I was searching in Google for IntelliJ IDEA with CQ5. Found a good tutorial for the same.
Here is a document which explains setup here for anyone else that is interested in setting up IntelliJ and getting started with CQ5.

Requirements:


    IntelliJ IDEA 11
    Apache Maven
    Adobe CQ5 Quickstart – Author Instance
    A knowledge of Apache Maven and how it works


Monday, 10 June 2013

How, When, What - Adobe Search & Promote.


This page contains details of flow of Adobe Search & Promote.

Adobe Search & Promote is one of the leaders in websites Product & Content Searches. How it is different from other technologies is the way we can do customization in search. We can use one of the best feature available in market called promote.

The major aim of any search migration project are given below,

a)    Migration of legacy search system to Search & Promote platform.
b)    Return more relevant results
c)    Use customer-supplied metrics to rank search results

So the flow happens as given below.

•    Create new Search & Promote account for the team.
•    Define metadata schema & configure the URL entry points/ index connector.
•    Using report widgets to see data populated by verifying all results are indexed, verifying all results are returned in the data view & verify that keyword searches are returning best results as offered by S&P.
•    Designing search result pages
•    Facet based search implementation.
•    Implement Sort, facet, breadcrumb, pagination etc.
•    implement best way of navigation by making it easy for users to navigate results using nested facets.
•    More details on content search (data views, sort etc) and transport layer.
•    The output can be configured to deliver HTML or XML as requested by clients.
•    We can do ranking of results based on metrics on previous searches.

Extra Notes:

•    Debug any issues with the search functionality using debug options available and also through analyzing the transport layer output.
•    Then using business rules, direct hits we can display promotional content, such as banners, depending on specific search contexts.

We recommend adobe search & promote for any product/content search in any type of website. If you need assistance, contact Adobe: http://www.adobe.com/in/products/searchandpromote.html

Found we are violating in any of the content of the web page, please contact us through cqguru@gmail.com
Update; Adobe Search & Promote is now Adobe Target

Friday, 24 May 2013

Adobe Search And Promote and performance

Let us see the major things to be taken care to avoid performance issues while implementing Adobe S and P.
As we know search and promote has got many advantages and abundant modes of customization while
implementing for a websearch.

Usually a web can have content search and if it is a website which sells products, there are product searches available to implement. Same time we need to ensure some of the things while we implement it, which can affect the performance of search.

1) Rules implementation.

There are pre and post searches in any search process. So in Search and Promote we should ensure the post search should be minimal and it should not execute many times (need another new search = 0).

2) Templates should be light: There should not be unnecessary loops and keep temlates always light. it helps to improve the performance.

3) Filed table/attribute table implementation: Ensure the field table to be not executed during first page load. ie, always create field table when *only* required.

Wednesday, 27 March 2013

How to use a different Synonym Provider other than Wordnet in CQ?



When we enable spell checker in CQ5, the default synonym provider class is com.day.crx.core.query.wordnet.WordNetSynonyms which is used to perform the spell check.


WordNet uses semantic algorithms to match synonyms. The service that CQ5 is using (WordNet Search - 3.1) works with the Perl implementation of it.


Another way could be,
the spell checker can be configured by using our own properties file as mentioned below

<param name="synonymProviderClass" value="org.apache.jackrabbit.core.query.lucene.PropertiesSynonymProvider"/>

<param name="synonymProviderConfigPath" value="synonyms.properties"/>


Some cases enabling the WordNet synonym providerdo not always meet the spell check need.

Doing semantic analysis programmatically will always create some false positives. If we can live with them we could use WordNet. Otherwise we could look for a different approach based on babelnet.org or just static files.


If we want to implement an additional provider besides the existing one we would need to use a wrapper class for this.