In this blog I would like to explain the basic set of configuration/design decisions needed to setup an ATG search project. Most of these design decisions are common for all Enterprise search applications.
1. Decide the searchable properties : This means the properties that the business want the user to search in the ecommerce platform. In ATG search these are configured as the text properties in the product-catalog-output-config.xml ( the definitionFile of the \atg\commerce\search\ProductCatalogOutputConfig). Usually the displayName of product/sku, displayName of department/category/sub-category, skuId, brandName are the properties configured as searchable.
2. Decide the search refinement properties or the faceted properties : After a user search for a keyword, search refinement is the next step done to filter his results. ATG supports the search refinement using the Faceted Search concept. Read more about facted search @ http://en.wikipedia.org/wiki/Faceted_search. Here we need to decide which are global and which are local facets. Global facets are the search refinements common to all the category/department.For example Price/Brand are the facets common for all skus. Local facets are the search refinements specific to some category/departments. For example New Release/Coming Soon are the facets specific to Physical Media products like Vidoe/DVD/Blue-ray. In ATG search these are configured as the meta properties in the product-catalog-output-config.xml. Facet definition against the category can be done from the ATG - BCC. Read more about how to create facets @ http://tips4ufromsony.blogspot.in/2012/02/search-facets-how-to-create-new-search.html . For text queries we normally use refineConfig=”map” and engine itself determines the right refine config.
3. Decide the search sort properties : All the ecommerce site should allow the user to sort the search results based on some properties. You need to decide which are the properties and you need to add these properties as the meta properties in the product-catalog-output-config.xml. For sorting you need to specify the below parameters in the search engine request xml.
4. Decide the refinment related search engine request parameters : refineConfig="name" refineMax="max" refineTop="top" refineMin="min" are the search engine request parameters related to facet.
• Max --> Maximum number of facet properties to return, even if the facet set could generate more. The default value is 0, which means no calculation is made.
• Top --> Maximum number of facet property values (per property). The values are selected in sort order, which usually is in terms of the number of index items that has each value. The default value is 5.
• Min --> Minimum size of a facet property value, in terms of the number of index items with that value. The default value is 0.
5. Decide whether you need the related search keywords : If your ecommerce site wnat to display related search keywords , you need to specify " feedback=true" in the search engine request xml. For example if you search for "apple", related searches will display "apple ipad , apple ipod,..."
6. Decide how many search result you want to display in each page <pagination> : Pagination of the search result setup has the following parameters in the request xml
a. pageSize --> Specify the total number of results in a page
b. pageNum --> Specify the current page number
7. Decide whether you need automatic spell correction in the search result : This can be set in request xml as autospell="true" to enable the spell check for ATG search . Make sure that terms like product names are added to the dictionary to avoid search treating them as miss spelt words.
8. Decide the maximum search results : For performance related reasons, you may need to restrict the search results to a maximum count. This can be done in ATG search by using the below request parameter.
a. pool=500 --> sets the maximum number of results in search to 500.
b. retMax=6000 --> Limits the number of top candidates that are matched in detail for their final relevancy.
9. Decide whether you go for an AND/OR of the search keywords : If the search query is " oracle atg" then whether the search need to run for " oracle AND atg" or " oracle OR atg" is decided based on the mode=AND property of the request parameter.
10. Decide whether you need to create synonym for some search keywords : If the ecommerce site has some products with name baby and the business want to display these products for a search with keyword child/ boy / girl / kid , then you need to create search synonyms using the BCC - Search Admin - Term Dictionary to give these terms as the synonym of baby.
11. Decide whether you need to specify a search redirection rule : Search Redirection rule is used to redirect a keyword search to a a different URL. Read more about atg search redirect rules @ http://tips4ufromsony.blogspot.in/2012/02/atg-search-how-to-define-search.html
12. Decide whether you need to specify a search result exclusion : Search result exclusion rule is used to specify the rules like " if the search query contains some phrase/word/pattern, do not return products in category/Id/name is...". Read more about atg search result exclusion @ http://tips4ufromsony.blogspot.in/2012/02/atg-search-how-to-define-search.html
13. Decide whether you need to specify a search result positioning rule: Search result positioning is used to define rules that move certain search results higher on the results list. Read more about atg search result positioning @ http://tips4ufromsony.blogspot.in/2012/02/atg-search-how-to-define-search.html
14. Decide whether you need to specify a search property prioritization: Search property prioritization is used to define the priority and weightage of different properties for determining the order of search results. Read more about atg search property prioritization @ http://tips4ufromsony.blogspot.in/2012/02/atg-search-how-to-define-search.html
15. Decide how many search engines you need : Based on the performance requirement of the ecommerce site, create the Search Project @ BCC - Search Admin and add the search engine hosts. Read more about search project creation and search engine host set up @ http://tips4ufromsony.blogspot.com/2012/01/atg-search-how-to-create-search-project.html.
16. Decide whether you need to have the search suggestions module : Based on the search results, if no search results are returned the search suggestions module can suggest for some other query/results.
17. Decide whether you need Type ahead functionality : ATG 9 is supporting the Type ahead functionality, which provides suggestions for search queries as you start typing some search key words.
18. Decide whether you need Insta search : Instant search or Insta search will give you search results as you type some search keywords.
1. Decide the searchable properties : This means the properties that the business want the user to search in the ecommerce platform. In ATG search these are configured as the text properties in the product-catalog-output-config.xml ( the definitionFile of the \atg\commerce\search\ProductCatalogOutputConfig). Usually the displayName of product/sku, displayName of department/category/sub-category, skuId, brandName are the properties configured as searchable.
2. Decide the search refinement properties or the faceted properties : After a user search for a keyword, search refinement is the next step done to filter his results. ATG supports the search refinement using the Faceted Search concept. Read more about facted search @ http://en.wikipedia.org/wiki/Faceted_search. Here we need to decide which are global and which are local facets. Global facets are the search refinements common to all the category/department.For example Price/Brand are the facets common for all skus. Local facets are the search refinements specific to some category/departments. For example New Release/Coming Soon are the facets specific to Physical Media products like Vidoe/DVD/Blue-ray. In ATG search these are configured as the meta properties in the product-catalog-output-config.xml. Facet definition against the category can be done from the ATG - BCC. Read more about how to create facets @ http://tips4ufromsony.blogspot.in/2012/02/search-facets-how-to-create-new-search.html . For text queries we normally use refineConfig=”map” and engine itself determines the right refine config.
3. Decide the search sort properties : All the ecommerce site should allow the user to sort the search results based on some properties. You need to decide which are the properties and you need to add these properties as the meta properties in the product-catalog-output-config.xml. For sorting you need to specify the below parameters in the search engine request xml.
a. docSort="predicate" --> This attribute specifies the criterion for sorting the result groups returned by ATG Search. If the docSort parameter is not specified in the page, its value is taken from the component’s defaultSortMode property. The default value is relevance, which means the result groups are sorted by their relevance scores.
b. docSortOrder="" --> Ascending or descending order. If the sortOrder parameter is not specified in the page, its value is taken from the component’s defaultSortOrder property. The default value is descending
c. sortProp="" --> This attribute specifies the property to sort on if the value of the docSort attribute is numprop or strprop.
d. docSortPred=".." --> This attribute specifies the set of properties used for the default predicate sorting. An example can be docSortPred="relevance:descending|numprop:descending:childSKUs.skuFeature:1
4. Decide the refinment related search engine request parameters : refineConfig="name" refineMax="max" refineTop="top" refineMin="min" are the search engine request parameters related to facet.
• Max --> Maximum number of facet properties to return, even if the facet set could generate more. The default value is 0, which means no calculation is made.
• Top --> Maximum number of facet property values (per property). The values are selected in sort order, which usually is in terms of the number of index items that has each value. The default value is 5.
• Min --> Minimum size of a facet property value, in terms of the number of index items with that value. The default value is 0.
5. Decide whether you need the related search keywords : If your ecommerce site wnat to display related search keywords , you need to specify " feedback=true" in the search engine request xml. For example if you search for "apple", related searches will display "apple ipad , apple ipod,..."
6. Decide how many search result you want to display in each page <pagination> : Pagination of the search result setup has the following parameters in the request xml
a. pageSize --> Specify the total number of results in a page
b. pageNum --> Specify the current page number
7. Decide whether you need automatic spell correction in the search result : This can be set in request xml as autospell="true" to enable the spell check for ATG search . Make sure that terms like product names are added to the dictionary to avoid search treating them as miss spelt words.
8. Decide the maximum search results : For performance related reasons, you may need to restrict the search results to a maximum count. This can be done in ATG search by using the below request parameter.
a. pool=500 --> sets the maximum number of results in search to 500.
b. retMax=6000 --> Limits the number of top candidates that are matched in detail for their final relevancy.
9. Decide whether you go for an AND/OR of the search keywords : If the search query is " oracle atg" then whether the search need to run for " oracle AND atg" or " oracle OR atg" is decided based on the mode=AND property of the request parameter.
10. Decide whether you need to create synonym for some search keywords : If the ecommerce site has some products with name baby and the business want to display these products for a search with keyword child/ boy / girl / kid , then you need to create search synonyms using the BCC - Search Admin - Term Dictionary to give these terms as the synonym of baby.
11. Decide whether you need to specify a search redirection rule : Search Redirection rule is used to redirect a keyword search to a a different URL. Read more about atg search redirect rules @ http://tips4ufromsony.blogspot.in/2012/02/atg-search-how-to-define-search.html
12. Decide whether you need to specify a search result exclusion : Search result exclusion rule is used to specify the rules like " if the search query contains some phrase/word/pattern, do not return products in category/Id/name is...". Read more about atg search result exclusion @ http://tips4ufromsony.blogspot.in/2012/02/atg-search-how-to-define-search.html
13. Decide whether you need to specify a search result positioning rule: Search result positioning is used to define rules that move certain search results higher on the results list. Read more about atg search result positioning @ http://tips4ufromsony.blogspot.in/2012/02/atg-search-how-to-define-search.html
14. Decide whether you need to specify a search property prioritization: Search property prioritization is used to define the priority and weightage of different properties for determining the order of search results. Read more about atg search property prioritization @ http://tips4ufromsony.blogspot.in/2012/02/atg-search-how-to-define-search.html
15. Decide how many search engines you need : Based on the performance requirement of the ecommerce site, create the Search Project @ BCC - Search Admin and add the search engine hosts. Read more about search project creation and search engine host set up @ http://tips4ufromsony.blogspot.com/2012/01/atg-search-how-to-create-search-project.html.
16. Decide whether you need to have the search suggestions module : Based on the search results, if no search results are returned the search suggestions module can suggest for some other query/results.
17. Decide whether you need Type ahead functionality : ATG 9 is supporting the Type ahead functionality, which provides suggestions for search queries as you start typing some search key words.
18. Decide whether you need Insta search : Instant search or Insta search will give you search results as you type some search keywords.
Hi Sony
ReplyDeleteI am currently facing a problem with ATGSearch which I have mentioned here.
https://forums.oracle.com/forums/thread.jspa?threadID=2361169
If possible please take a look at it. Appreciate your help
will look into it and update your oracle forum entry :-)
ReplyDeleteHi Sony,
ReplyDeleteIn request i enabled feedback="true"
As per ATG docs, I am using the OOTB property QueryRequest.Response.getFeedbackReport() to display related search items. Using this object we can retrieve the values using the property getRelatedPhraseTerms().getTerms(). But it always giving me an empty FeedbackReport. Do i need to any setup before indexing? I really Appreciate your help
Thanks
Venkat
Try this :
ReplyDeletefacetSearchResponse.searchResults.feedbackReport.relatedSentenceTerms.terms
Excellent Article
ReplyDeleteAravind
Hi Sony
ReplyDeleteI am currently facing a problem with ATGSearch which I have mentioned here.
https://forums.oracle.com/forums/thread.jspa?threadID=2453031.
If possible please take a look at it. Appreciate your help