This post is on the older side and its content may be out of date.
Be sure to visit our blogs homepage for our latest news, updates and information.
To make Lucene use your custom analyzer in Sitefinity you need to register it in the ObjectFactory. This way it will be used both during indexing and during search. This would mean that the search index would store all characters with accents removed and during search all accents will also be removed.
Altogether you will need the following code in your Global.asax.cs:
using System;using Telerik.Microsoft.Practices.Unity;using Telerik.Sitefinity.Abstractions;using Telerik.Sitefinity.Data;using Telerik.Sitefinity.Utilities.Lucene.Net.Analysis;using Telerik.Sitefinity.Utilities.Lucene.Net.Analysis.Standard; namespace SitefinityWebApp{ public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { Bootstrapper.Initialized += this.Bootstrapper_Initialized; } private void Bootstrapper_Initialized(object sender, ExecutedEventArgs e) { if (e.CommandName != "Bootstrapped") return; ObjectFactory.Container.RegisterType<Analyzer, AccentInsensitiveAnalyzer>( new ContainerControlledLifetimeManager(), new InjectionConstructor(new InjectionParameter<string[]>(null))); } } public class AccentInsensitiveAnalyzer : StandardAnalyzer { public AccentInsensitiveAnalyzer(string[] stopWords) : base(stopWords) { } public override TokenStream TokenStream(string fieldName, System.IO.TextReader reader) { TokenStream stream = new StandardTokenizer(reader); stream = new StandardFilter(stream); stream = new ASCIIFoldingFilter(stream); return stream; } }}
Subscribe to get all the news, info and tutorials you need to build better business apps and sites