Skip to content

Instantly share code, notes, and snippets.

@sitefinitySDK
Last active May 21, 2025 08:55
Show Gist options
  • Save sitefinitySDK/95cc0c38d2a8aac942bd20da0b77bdd1 to your computer and use it in GitHub Desktop.
Save sitefinitySDK/95cc0c38d2a8aac942bd20da0b77bdd1 to your computer and use it in GitHub Desktop.
using Lucene.Net.Search;
using Telerik.Sitefinity.Services.Search.Data;
using Telerik.Sitefinity.Search;
using Lucene.Net.QueryParsers.Classic;
using System.Collections.Specialized;
using Telerik.Sitefinity.Configuration;
using Telerik.Sitefinity.Search.Configuration;
using Telerik.Sitefinity.Services.Search.Configuration;
namespace SitefinityWebApp.Documentation.Samples.Search
{
public class CustomizedLuceneSearchService : LuceneSearchService
{
protected override Query BuildLuceneQuery(string compiledQuery, SearchOptions searchOptions, IndexSearcher searcher = null)
{
var parser = new QueryParser(Lucene.Net.Util.LuceneVersion.LUCENE_48, string.Empty, this.GetAnalyzer());
parser.Locale = System.Globalization.CultureInfo.InvariantCulture;
if (compiledQuery.Contains("*"))
{
if (searchOptions.SearchType == SearchType.Contains)
{
parser.AllowLeadingWildcard = true;
}
parser.MultiTermRewriteMethod = WildcardQuery.SCORING_BOOLEAN_QUERY_REWRITE;
}
var query = parser.Parse(compiledQuery);
if (searcher != null)
{
query = searcher.Rewrite(query);
}
bool excludeAge;
var config = this.GetLuceneServiceConfig();
bool.TryParse(config[LuceneSearchService.ExcludeContentAgeFromScoreCalculation], out excludeAge);
return new SitefinityCustomScoreQuery(query, excludeAge);
}
private NameValueCollection GetLuceneServiceConfig()
{
var searchConfig = Config.Get<SearchConfig>();
IConfigElementItem luceneService;
if (searchConfig.SearchServices.TryGetItem(LuceneSearchService.ServiceName, out luceneService))
{
var parameters = ((SearchServiceSettings)luceneService.Element).Parameters;
return parameters;
}
else
{
return new NameValueCollection();
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment