private string GetSnippet(SearchResult searchResult, LuceneResult luceneResult)
        {
            var sb = new StringBuilder();

            if (!string.IsNullOrEmpty(luceneResult.TitleSnippet)) sb.Append(luceneResult.TitleSnippet + "...");
            if (!string.IsNullOrEmpty(luceneResult.DescriptionSnippet)) sb.Append(luceneResult.DescriptionSnippet + "...");
            if (!string.IsNullOrEmpty(luceneResult.TagSnippet)) sb.Append(luceneResult.TagSnippet + "...");
            if (!string.IsNullOrEmpty(luceneResult.BodySnippet)) sb.Append(luceneResult.BodySnippet + "...");
            if (!string.IsNullOrEmpty(luceneResult.AuthorSnippet)) sb.Append(luceneResult.AuthorSnippet + "...");
            if (!string.IsNullOrEmpty(luceneResult.ContentSnippet)) sb.Append(luceneResult.ContentSnippet + "...");

            var snippet = sb.ToString();
           if (string.IsNullOrEmpty(snippet)) snippet = searchResult.Title;

            return snippet;
        }
        private SearchResult GetSearchResultFromLuceneResult(LuceneResult luceneResult)
        {
            var result = new SearchResult();
            var doc = luceneResult.Document;
            result.DisplayScore = luceneResult.DisplayScore;
            result.Score = luceneResult.Score;
            
            // set culture code of result
            result.CultureCode = string.Empty;
            var localeField = luceneResult.Document.GetField(Constants.LocaleTag);
            if (localeField != null)
            {
                int id;
                if (int.TryParse(localeField.StringValue, out id) && id >= 0)
                {
                    result.CultureCode = LocaleController.Instance.GetLocale(id).Code;
                }
                else
                {
                    result.CultureCode = Null.NullString;
                }
            }

            FillTagsValues(doc, result);
            result.Snippet = GetSnippet(result, luceneResult);
            return result;
        }