Professional Documents
Culture Documents
Real-time Indexing
Triggered by FSR deployment Process only change-set (incremental updates) Assemble relevant page content
Page Composition
Metacontent.xml Pagemetadata.xml Relatedlinks.xml
dynamic
Sectionhtml.xml
dynamic
Supportingitems.xml
Content Delivery
(http://crafterrivet.org)
Indexing Architecture
Solr Customizations
Custom Solr
Schema.xml
Fields (Type, Indexed/Stored) Unique key
Solrconfig.xml
dismax type request handler to define queried fields ExtractingRequestHandler (indexing RT docs)
ExtractingRequestHandler
<!-- Solr Cell: http://wiki.apache.org/solr/ExtractingRequestHandler --> <requestHandler name="/update/extract" class="org.apache.solr.handler.extraction.ExtractingRequestHandler" startup="lazy"> <lst name="defaults"> <str name="fmap.content">page_text</str> <str name="fmap.title">page_title</str> <str name="uprefix">ignored_</str> </lst> </requestHandler> <dynamicField name="ignored_*" type="ignored"/> ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract"); up.addFile(new File(filePath)); SolrServer solrServer = new CommonsHttpSolrServer(solrServerUrl); solrServer.request(up); solrServer.commit();
Custom RequestHandler
<!-- DisMaxRequestHandler allows easy searching across multiple fields for simple user-entered phrases. It's implementation is now just the standard SearchHandler with a default query type of "dismax". see http://wiki.apache.org/solr/DisMaxRequestHandler --> <requestHandler name=solrDemoDismax" class="solr.SearchHandler" > <lst name="defaults"> <str name="defType">dismax</str> <str name="qf"> page_title^5.0 page_text^1.0 </str> </lst> </requestHandler>
Compilation
Compiler Engine processes all instructions Dispatches to appropriate Page Type Compiler
Compiler Instructions
<updates deploy-root=/path/to/content/root"> ... <update>/solutions/security/article.xml</update> <delete>/products/widget/top-section.xml</delete> ... </updates>
Compilation Types
1. Web Pages (HTML) 2. Rich Text (PDF)
Indexer Instructions
Compiler Configuration
Compiler Configuration
<compiler-config> <page-types> <page-type name="Solution Page compiler="com.rivetlogic.index.compile.ArticleCompiler"> <uri-pattern pattern=".*/page-content/solutions/.*(article|page-metadata|meta-content).xml$" /> <properties> <property field=page_type value=Web Page/> <property field=page_category value=Solutions/> </properties> </page-type> <page-type name="Press Release Page compiler="com.paetec.index.model.compile.PressReleaseCompiler"> <uri-pattern pattern=".*/press-releases/.*/(press-release|meta-content).xml$" /> <properties> <property field=page_type value=Press Release/> <property field=page_category value=News/> </properties> </page-type> <page-types> <compiler-config>
Search UI
Full text search Faceted search on category & type Pagination or search result clustering Keyword highlighting in search results Track user queries
Clustered Results
Summary
Requirements:
Real time updates Full editorial control Faceted search
Solution
Alfresco CMS Alfresco plugin for Solr indexing Compile updates & index Serve in UI (ft search + facets)
Q&A
Thank you for attending :-) Questions, comments
Appendix
Search Model/API