I would like to explain the high level ATG Search implementation architecture ( for an online store) through the above diagram. In this diagram 1.x denotes the search functionality and 2.x denotes the indexing functionality. I have given JBoss as the application server.
Physical Boxes and Application Servers in the diagram ( as recommended by ATG ) :
- Estore ( Commerce ) Box --> The box with the estore/site ear (with the site JSPs and Java codes).
- Search Engine Box --> The box with the search engine application running.
- Indexing Engine Box --> The box with the indexing engine application running.
- CA (Content Administration) Box --> The box with the ATG CA ear ( where we could take CA -BCC - Search Administration and configure the search projects) .
- Search Indexer Box --> The box with the ATG Search Index ear ( to fetch the index data from repository). Note that the engine performing indexing will need access to the data it is indexing, which for production is the production repository. It will typically access the data via a commerce instance. For best performance, and for large repositories, that commerce instance should be dedicated for search indexing, and should be a fast machine.
1. Search functionality flow details :
1.1 Estore server will find the search engine box's host and search engine application running port details from the Search repository
1.2 Estore server will call the Search engine application as a SOAP request using this host an port
1.3 Search engine will find the search results using the index file
1.4 Search engine will send the search results back to the Estore server
2. Index functionality flow details :
2.1 CA server will start the indexing and will call the Search Index server to fetch the data to be indexed from the repository
2.2 Search Index server will fetch the data from the catalog repository
2.3 CA server will call the Index engine application to create the index files
2.4 Index engine application will create the index files and keep it in a shared folder so that all the search engine applications can read it
2.5 During the index deploy phase, all search engines will copy the index files to a local folder for fast access
If you need more details, please comment so that I can answer your specific questions :-)
1.1 Estore server will find the search engine box's host and search engine application running port details from the Search repository
1.2 Estore server will call the Search engine application as a SOAP request using this host an port
1.3 Search engine will find the search results using the index file
1.4 Search engine will send the search results back to the Estore server
2. Index functionality flow details :
2.1 CA server will start the indexing and will call the Search Index server to fetch the data to be indexed from the repository
2.2 Search Index server will fetch the data from the catalog repository
2.3 CA server will call the Index engine application to create the index files
2.4 Index engine application will create the index files and keep it in a shared folder so that all the search engine applications can read it
2.5 During the index deploy phase, all search engines will copy the index files to a local folder for fast access
If you need more details, please comment so that I can answer your specific questions :-)
nice article
ReplyDeleteit is great and simple. Incase both Ca, index and search engine are on same host even then will it communicate via RMI?
ReplyDeleteFirst of all, it is not recommended to have these 2 servers and search engine in the same host due to performance reasons. If we have them on the same box, communication with the search engine will always be through SOAP http request and from CA to search index will be via the remote port defined in search indexer.
ReplyDeleteDoes the engine query the latest deployed index for the results or does it query the index file that is mentioned as part of the search request?
ReplyDeleteIf it does the latter, how does the index information get updated on the client?
The engine will look into the current deployed index. The current deployed index can be the latest index or can be an old one deployed through historical index deploy.
ReplyDeleteWhy the client need the index information ?
All articles related to ATG are really interesting and easy to understand Thomas! Great work.
ReplyDeleteUr are really amazing SONY.... Iam New to ATG.. I want to know more concepts of ATG will u help me plzzz.....
ReplyDelete