Updates to latest examine beta, cleans up more code, always reference a searcher by it's indexer

This commit is contained in:
Shannon
2018-03-28 22:23:17 +11:00
parent 52aa02668f
commit 7d13704cf9
10 changed files with 23 additions and 32 deletions

View File

@@ -18,21 +18,7 @@
/// The alias of the external content indexer
/// </summary>
public const string ExternalIndexer = "ExternalIndexer";
/// <summary>
/// The alias of the internal member searcher
/// </summary>
public const string InternalMemberSearcher = "InternalMemberSearcher";
/// <summary>
/// The alias of the internal content searcher
/// </summary>
public const string InternalSearcher = "InternalSearcher";
/// <summary>
/// The alias of the external content searcher
/// </summary>
public const string ExternalSearcher = "ExternalSearcher";
}
}
}

View File

@@ -47,7 +47,7 @@
<ItemGroup>
<!-- note: NuGet deals with transitive references now -->
<PackageReference Include="Examine">
<Version>1.0.0-beta017</Version>
<Version>1.0.0-beta020</Version>
</PackageReference>
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="NPoco" Version="3.6.1" />

View File

@@ -143,9 +143,9 @@ namespace Umbraco.Examine
/// Returns a list of fields to search on, this will also exclude the IndexPathFieldName and node type alias
/// </summary>
/// <returns></returns>
protected override string[] GetSearchFields()
public override string[] GetAllIndexedFields()
{
var fields = base.GetSearchFields();
var fields = base.GetAllIndexedFields();
return fields
.Where(x => x != UmbracoExamineIndexer.IndexPathFieldName)
.Where(x => x != LuceneIndexer.ItemTypeFieldName)

View File

@@ -60,7 +60,7 @@
<HintPath>..\packages\Castle.Core.4.1.1\lib\net45\Castle.Core.dll</HintPath>
</Reference>
<Reference Include="Examine, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.1.0.0-beta017\lib\net45\Examine.dll</HintPath>
<HintPath>..\packages\Examine.1.0.0-beta020\lib\net45\Examine.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>

View File

@@ -2,7 +2,7 @@
<packages>
<package id="AutoMapper" version="6.1.1" targetFramework="net461" />
<package id="Castle.Core" version="4.1.1" targetFramework="net461" />
<package id="Examine" version="1.0.0-beta017" targetFramework="net461" />
<package id="Examine" version="1.0.0-beta020" targetFramework="net461" />
<package id="LightInject" version="5.0.3" targetFramework="net461" />
<package id="LightInject.Annotation" version="1.1.0" targetFramework="net461" />
<package id="log4net" version="2.0.8" targetFramework="net461" />

View File

@@ -55,7 +55,7 @@
<HintPath>..\packages\AutoMapper.6.1.1\lib\net45\AutoMapper.dll</HintPath>
</Reference>
<Reference Include="Examine, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Examine.1.0.0-beta017\lib\net45\Examine.dll</HintPath>
<HintPath>..\packages\Examine.1.0.0-beta020\lib\net45\Examine.dll</HintPath>
</Reference>
<Reference Include="ImageProcessor.Web, Version=4.8.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ImageProcessor.Web.4.8.4\lib\net45\ImageProcessor.Web.dll</HintPath>

View File

@@ -4,7 +4,7 @@
<package id="ClientDependency" version="1.9.2" targetFramework="net461" />
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net461" />
<package id="CSharpTest.Net.Collections" version="14.906.1403.1082" targetFramework="net461" />
<package id="Examine" version="1.0.0-beta017" targetFramework="net461" />
<package id="Examine" version="1.0.0-beta020" targetFramework="net461" />
<package id="ImageProcessor" version="2.5.4" targetFramework="net461" />
<package id="ImageProcessor.Web" version="4.8.4" targetFramework="net461" />
<package id="ImageProcessor.Web.Config" version="2.3.0.0" targetFramework="net461" />

View File

@@ -39,7 +39,7 @@ namespace Umbraco.Web.Search
var sb = new StringBuilder();
string type;
var searcher = Constants.Examine.InternalSearcher;
var indexer = Constants.Examine.InternalIndexer;
var fields = new[] { "id", "__NodeId" };
var umbracoContext = umbracoHelper.UmbracoContext;
@@ -48,7 +48,7 @@ namespace Umbraco.Web.Search
switch (entityType)
{
case UmbracoEntityTypes.Member:
searcher = Constants.Examine.InternalMemberSearcher;
indexer = Constants.Examine.InternalMemberIndexer;
type = "member";
fields = new[] { "id", "__NodeId", "email", "loginName" };
if (searchFrom != null && searchFrom != Constants.Conventions.MemberTypes.AllMembersListId && searchFrom.Trim() != "-1")
@@ -72,7 +72,7 @@ namespace Umbraco.Web.Search
throw new NotSupportedException("The " + typeof(UmbracoTreeSearcher) + " currently does not support searching against object type " + entityType);
}
var internalSearcher = ExamineManager.Instance.SearchProviderCollection[searcher];
var internalSearcher = ExamineManager.Instance.GetIndexSearcher(indexer);
//build a lucene query:
// the __nodeName will be boosted 10x without wildcards

View File

@@ -66,7 +66,7 @@
<PackageReference Include="ClientDependency" Version="1.9.2" />
<PackageReference Include="CSharpTest.Net.Collections" Version="14.906.1403.1082" />
<PackageReference Include="dotless" Version="1.5.2" />
<PackageReference Include="Examine" Version="1.0.0-beta017" />
<PackageReference Include="Examine" Version="1.0.0-beta020" />
<PackageReference Include="HtmlAgilityPack" Version="1.5.1" />
<PackageReference Include="LightInject" Version="5.0.3" />
<PackageReference Include="LightInject.Annotation" Version="1.1.0" />

View File

@@ -14,6 +14,7 @@ using Umbraco.Core.Cache;
using Umbraco.Core.Logging;
using Umbraco.Core.Composing;
using Umbraco.Core.Services;
using Umbraco.Examine;
using Umbraco.Web.Search;
using Umbraco.Web.WebApi;
using Umbraco.Web.WebApi.Filters;
@@ -23,15 +24,17 @@ namespace Umbraco.Web.WebServices
[ValidateAngularAntiForgeryToken]
public class ExamineManagementApiController : UmbracoAuthorizedApiController
{
public ExamineManagementApiController(ILogger logger, IRuntimeCacheProvider runtimeCacheProvider)
public ExamineManagementApiController(IExamineIndexCollectionAccessor examineIndexes, ILogger logger, IRuntimeCacheProvider runtimeCacheProvider)
{
//fixme can we inject this? we'll need an IExamineManager
_examineManager = ExamineManager.Instance;
_examineIndexes = examineIndexes;
_logger = logger;
_runtimeCacheProvider = runtimeCacheProvider;
}
private readonly ExamineManager _examineManager;
private readonly IExamineIndexCollectionAccessor _examineIndexes;
private readonly ILogger _logger;
private readonly IRuntimeCacheProvider _runtimeCacheProvider;
@@ -86,7 +89,7 @@ namespace Umbraco.Web.WebServices
/// <returns></returns>
public IEnumerable<ExamineIndexerModel> GetIndexerDetails()
{
return ExamineManager.Instance.IndexProviders.Select(CreateModel).OrderBy(x =>
return _examineIndexes.Indexes.Select(CreateModel).OrderBy(x =>
{
//order by name , but strip the "Indexer" from the end if it exists
return x.Name.TrimEnd("Indexer");
@@ -100,7 +103,7 @@ namespace Umbraco.Web.WebServices
public IEnumerable<ExamineSearcherModel> GetSearcherDetails()
{
var model = new List<ExamineSearcherModel>(
ExamineManager.Instance.IndexProviders.Select(indexer =>
_examineIndexes.Indexes.Select(indexer =>
{
var searcher = indexer.Value.GetSearcher();
var searcherName = (searcher as BaseLuceneSearcher)?.Name ?? string.Concat(indexer.Key, "Searcher");
@@ -286,7 +289,7 @@ namespace Umbraco.Web.WebServices
private HttpResponseMessage ValidateLuceneSearcher(string searcherName, out LuceneSearcher searcher)
{
foreach (var indexer in ExamineManager.Instance.IndexProviders)
foreach (var indexer in _examineIndexes.Indexes)
{
var s = indexer.Value.GetSearcher();
var sName = (s as BaseLuceneSearcher)?.Name ?? string.Concat(indexer.Key, "Searcher");
@@ -316,14 +319,16 @@ namespace Umbraco.Web.WebServices
{
indexer = null;
if (ExamineManager.Instance.IndexProviders.ContainsKey(indexerName))
if (_examineIndexes.Indexes.ContainsKey(indexerName)
&& _examineIndexes.Indexes[indexerName] is T casted)
{
//return Ok!
indexer = casted;
return Request.CreateResponse(HttpStatusCode.OK);
}
var response = Request.CreateResponse(HttpStatusCode.BadRequest);
response.Content = new StringContent($"No indexer found with name = {indexerName}");
response.Content = new StringContent($"No indexer found with name = {indexerName} of type {typeof(T)}");
response.ReasonPhrase = "Indexer Not Found";
return response;
}