diff --git a/src/Umbraco.Examine/IUmbracoIndexConfig.cs b/src/Umbraco.Examine/IUmbracoIndexConfig.cs
new file mode 100644
index 0000000000..798c173f5c
--- /dev/null
+++ b/src/Umbraco.Examine/IUmbracoIndexConfig.cs
@@ -0,0 +1,12 @@
+using Examine;
+
+namespace Umbraco.Examine
+{
+ public abstract class IUmbracoIndexConfig
+ {
+ public abstract IContentValueSetValidator GetContentValueSetValidator();
+ public abstract IContentValueSetValidator GetPublishedContentValueSetValidator();
+ public abstract IValueSetValidator GetMemberValueSetValidator();
+
+ }
+}
diff --git a/src/Umbraco.Examine/Umbraco.Examine.csproj b/src/Umbraco.Examine/Umbraco.Examine.csproj
index e28a8e674e..2bfa810b45 100644
--- a/src/Umbraco.Examine/Umbraco.Examine.csproj
+++ b/src/Umbraco.Examine/Umbraco.Examine.csproj
@@ -64,9 +64,11 @@
+
+
diff --git a/src/Umbraco.Examine/UmbracoUmbracoIndexConfig.cs b/src/Umbraco.Examine/UmbracoUmbracoIndexConfig.cs
new file mode 100644
index 0000000000..0a9b8607e8
--- /dev/null
+++ b/src/Umbraco.Examine/UmbracoUmbracoIndexConfig.cs
@@ -0,0 +1,34 @@
+using Examine;
+using Umbraco.Core.Services;
+using Umbraco.Core.Services.Implement;
+
+namespace Umbraco.Examine
+{
+ public class UmbracoUmbracoIndexConfig : IUmbracoIndexConfig
+ {
+ public UmbracoUmbracoIndexConfig(IPublicAccessService publicAccessService)
+ {
+ PublicAccessService = publicAccessService;
+ }
+
+ protected IPublicAccessService PublicAccessService { get; }
+ public override IContentValueSetValidator GetContentValueSetValidator()
+ {
+ return new ContentValueSetValidator(false, true, PublicAccessService);
+ }
+
+ public override IContentValueSetValidator GetPublishedContentValueSetValidator()
+ {
+ return new ContentValueSetValidator(true, false, PublicAccessService);
+ }
+
+ ///
+ /// Returns the for the member indexer
+ ///
+ ///
+ public override IValueSetValidator GetMemberValueSetValidator()
+ {
+ return new MemberValueSetValidator();
+ }
+ }
+}
diff --git a/src/Umbraco.Web/Search/ExamineComposer.cs b/src/Umbraco.Web/Search/ExamineComposer.cs
index 0ade432d70..ee07e3dd1e 100644
--- a/src/Umbraco.Web/Search/ExamineComposer.cs
+++ b/src/Umbraco.Web/Search/ExamineComposer.cs
@@ -29,6 +29,7 @@ namespace Umbraco.Web.Search
composition.Register(Lifetime.Singleton);
composition.Register(Lifetime.Singleton);
+ composition.RegisterUnique();
composition.RegisterUnique();
composition.RegisterUnique(factory =>
new ContentValueSetBuilder(
diff --git a/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs b/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs
index 5ac5529be5..beecb85ae6 100644
--- a/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs
+++ b/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs
@@ -19,18 +19,20 @@ namespace Umbraco.Web.Search
public UmbracoIndexesCreator(IProfilingLogger profilingLogger,
ILocalizationService languageService,
IPublicAccessService publicAccessService,
- IMemberService memberService)
+ IMemberService memberService, IUmbracoIndexConfig umbracoIndexConfig)
{
ProfilingLogger = profilingLogger ?? throw new System.ArgumentNullException(nameof(profilingLogger));
LanguageService = languageService ?? throw new System.ArgumentNullException(nameof(languageService));
PublicAccessService = publicAccessService ?? throw new System.ArgumentNullException(nameof(publicAccessService));
MemberService = memberService ?? throw new System.ArgumentNullException(nameof(memberService));
+ UmbracoIndexConfig = umbracoIndexConfig;
}
protected IProfilingLogger ProfilingLogger { get; }
protected ILocalizationService LanguageService { get; }
protected IPublicAccessService PublicAccessService { get; }
protected IMemberService MemberService { get; }
+ protected IUmbracoIndexConfig UmbracoIndexConfig { get; }
///
/// Creates the Umbraco indexes
@@ -55,7 +57,7 @@ namespace Umbraco.Web.Search
new CultureInvariantWhitespaceAnalyzer(),
ProfilingLogger,
LanguageService,
- GetContentValueSetValidator());
+ UmbracoIndexConfig.GetContentValueSetValidator());
return index;
}
@@ -68,7 +70,7 @@ namespace Umbraco.Web.Search
new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30),
ProfilingLogger,
LanguageService,
- GetPublishedContentValueSetValidator());
+ UmbracoIndexConfig.GetPublishedContentValueSetValidator());
return index;
}
@@ -80,28 +82,11 @@ namespace Umbraco.Web.Search
CreateFileSystemLuceneDirectory(Constants.UmbracoIndexes.MembersIndexPath),
new CultureInvariantWhitespaceAnalyzer(),
ProfilingLogger,
- GetMemberValueSetValidator());
+ UmbracoIndexConfig.GetMemberValueSetValidator());
return index;
}
-
- public virtual IContentValueSetValidator GetContentValueSetValidator()
- {
- return new ContentValueSetValidator(false, true, PublicAccessService);
- }
- public virtual IContentValueSetValidator GetPublishedContentValueSetValidator()
- {
- return new ContentValueSetValidator(true, false, PublicAccessService);
- }
- ///
- /// Returns the for the member indexer
- ///
- ///
- public virtual IValueSetValidator GetMemberValueSetValidator()
- {
- return new MemberValueSetValidator();
- }
}
}