190 likes | 336 Views
EasySearch. Technical Overview. Problem Statement. Ever seen a website without a full text search? BUT Search is expensive Financially Computationally Search is complicated But it doesn’t need to be!. EasySearch. Simple Easy to install Via EPiServer Manager Easy to configure
E N D
EasySearch Technical Overview
Problem Statement • Ever seen a website without a full text search? • BUT • Search is expensive • Financially • Computationally • Search is complicated • But it doesn’t need to be!
EasySearch • Simple • Easy to install • Via EPiServer Manager • Easy to configure • Edit XML in web.config • Extremely flexible configuration model • Combine and transform individual page properties • Full IntelliSense support inside Visual Studio • Inexpensive • FREEfor all non-commercial use • NOK30,000for commercial deployment (approx. £3,000) • Enterprise license pricing available on request
Published Source • Published on EPiCode by BV Network AS • Bug Tracking • If you see a problem, tell us! • Feature Tracking • If you want a feature, tell us! • Wiki • Fostering a user community
Improved Indexing • Page and files are indexed on EPiServer events • Not visible until publication • Updated when the page or files are • Removed on page or file delete • No site crawlers • Produces unreliable search anyway • Much more efficient • Pages show up in search results immediately after publication
Configuration <section name="indexconfiguration" type="NetworkedPlanet.EasySearch.Lucene.LuceneSystemConfigurationReader, NetworkedPlanet.EasySearch.Lucene" /> • Index all page types • Joining all string, long string and XHTML properties <indexconfiguration/> Configured within web.config
Configuration 2 <indexonconfiguration xmlns="http://www.networkedplanet.com/schema/easysearch/configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <pagetype name=“person” /> <pagetype name=“skill” /> <pagetype name=“article” /> </indexconfiguration> • Index specific properties on a page type <indexonconfiguration xmlns="http://www.networkedplanet.com/schema/easysearch/configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <pagetype name=“person”> <property name=“description”/> <property name=“EPi_PageName”/> </pagetype> </indexconfiguration> Index specific page types
Configuration 3 <indexonconfiguration xmlns:lucene="http://www.networkedplanet.com/schema/easysearch/configuration/lucene" xmlns="http://www.networkedplanet.com/schema/easysearch/configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="lucene:LuceneIndexConfiguration"> <pagetypeName="Person"> <property Name="description“ IncludeInCommonContent="true“ xsi:type="lucene:LuceneProperty“> <lucene:fieldName="description“ FieldStore="NO“ FieldTermVector="NO" FieldIndex="TOKENIZED“ Boost="1.2“ /> </property> <property Name="EPi_PageName“ IncludeInCommonContent="true" /> </pagetype> </indexconfiguration> Configure storage of specific fields in Lucene
Configuration 4 <indexonconfiguration xmlns:lucene="http://www.networkedplanet.com/schema/easysearch/configuration/lucene" xmlns="http://www.networkedplanet.com/schema/easysearch/configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="lucene:LuceneIndexConfiguration"> <lucene:configurationRelativeDirecoryPath="EasySearchLuceneIndex" DocumentPrimaryKey="EPi_PageId" DocumentPrimaryKeyField="easysearch_primarykey" DocumentCommonContentField="easysearch_primarycontent" IndexWriterMaximumFieldLength="25000"> </indexconfiguration> Configure the Lucene Index
EasySearch – Admin Plug-in • Admin Mode Plug-in • Index Pages • Search Site • Show entire records
Edit Mode Plug-in Coming soon! Allows editors to see how their page will be indexed. Run sample searches to find whether page will be found after publication. Can be used to prevent/force indexing. Allows forced customizations to be made to the search record. Forces re-indexing of last published.
Developer’s API • EasySearch Generic API • Simple Search API using back-end query parser • Lucene back-end supports: • Wildcards, Fuzzy Terms, Range Searches, Boosting, Boolean operators, Escaping • Lucene Specific API • Provides direct access to the Lucene Query API • Ultimately flexible
Event Pipeline • Developers can customize indexing process. • Indexing process is pluggable: • Intercept indexing of a document for modification • Provide .NET code handlers in for modifying or creating new indexed fields
Provided Web Parts • EasySearch comes with 3 ASP.NET Web Parts • EasySearchInputWebPart • ESSearchResultsWebPart • PagingWebPart • All open source • Tailor to your specific site • OR use out of the box • All connections are interface-based • Allows easily replacement of individual parts • Supplied demo page shows them working together
EasySearchInputWebPart • Can apply CSS styles • Hide unwanted fields • Captures input: • From URL parameters • From HTML form input
ESSearchResultsWebPart • Produces XML • Web part allows customization using XSLT & CSS <?xmlversion="1.0" encoding="utf-8" ?> <SearchResults> <SearchResult> <index>3</index> <pageid>2334</pageid> <assettype>page</assettype> <linkurl> /EPiServer1/NetworkedPlanet/EPiServerModuleDemo/Templates/PersonTemplate.aspx?id=2334&epslanguage=en</linkurl> <title>Terry Walker</title> <pagetypename>Person</pagetypename> <pagetypeid>6</pagetypeid> <preview>The rabbit-hole went straight on like a tunnel for some way, and then dipped suddenly down, so suddenly that Alice had not a moment to think about stopping herself before she found herself falling down a very deep well.</preview> <publicationdate>11 Nov 08 02:52</publicationdate> </SearchResult> </SearchResults>
ESSearchResultsWebPart • Ships with XSLT for HTML formatted results
PagingWebPart • Can apply CSS styles • Hide unwanted fields • Plugs in to ESSearchResultsWebPart • Allows paging abilities
EasySearch Roadmap • Internationalization Support – DONE! • Security Support - DONE! • Integration with EPiServer Module - DONE! • Indexing of content in UFS - DONE! • Generic Search Results custom control - DONE! • Pluggable Search Pipeline - DONE! • Federated search via OpenSearch - In Progress • Support for multiple EPiServer servers - In Progress • Editor plug-in - In Progress • Synonym Search • Search Statistics • What people wanted and didn’t find • Common search terms tracking