Goal
This article provides information on how to index documents which are above the document size limit.
...
Open the backend of your Sitefinity instance.
Navigate to Administartion → Settings and click Advanced (your-site-domain/Sitefinity/Administration/Settings/Advanced)
Open the Hawksearch configuration
Under document size limit enter 4000KB
Save the changes
...
Empty content field
Code Block | ||
---|---|---|
| ||
using System; using System.Collections.Generic; using System.Linq; using Hawksearch.Search; using Telerik.Sitefinity.Services.Search.Data; using Telerik.Sitefinity.Configuration; using Telerik.Sitefinity.Services.Search.Model; using Hawksearch.Configuration; using Hawksearch.SDK.Indexing; namespace SitefinityWebApp { public class CustomSearchService : HawksearchService { private const string DcoumentContentType = "Telerik.Sitefinity.Libraries.Model.Document"; protected override List<SubmitDocument> AdaptDocuments(IEnumerable<IDocument> documents) { var doc = documents.ToList().FirstOrDefault(); var documentList = new List<IDocument>(documents); if (doc != null) { var contentTypeField = doc.Fields.FirstOrDefault(f => f.Name == "ContentType"); if (contentTypeField != null) { if (string.Equals(contentTypeField.Value.ToString(), DcoumentContentType, StringComparison.InvariantCultureIgnoreCase)) { var configManager = ConfigManager.GetManager(); var hawkConfig = configManager.GetSection<HawkSearchConfig>(); documentList = new List<IDocument>(); foreach (var document in documents) { var documentSize = 0.0; var modifiedDocument = document; foreach (var field in document.Fields) { if (field.Value != null) { documentSize += System.Text.Encoding.Unicode.GetByteCount(field.Value.ToString()) / 1024.0; } } if (documentSize > hawkConfig.DocumentSizeLimit) { modifiedDocument = this.ModifyDocument(document); } documentList.Add(modifiedDocument); } } } } return base.AdaptDocuments(documentList); } private IDocument ModifyDocument(IDocument document) { var fields = new List<IField>(document.Fields); var contentField = document.Fields.FirstOrDefault(f => f.Name == "Content"); if (contentField != null) { contentField.Value = string.Empty; } var modifiedDocument = new Document(fields, document.IdentityField.Name); return modifiedDocument; } } } |
...
Open the backend of your Sitefinity instance.
Navigate to Administration → Settings (your-site-domain/Sitefinity/Administration/Settings)
Go to Advanced (your-site-domain/Sitefinity/Administration/Settings/Advanced)
Under Search → Search services → Hawksearch enter the TypeName of you custom search service (e.g. SitefinityWebApp.CustomSearchService)
Save the changes