Updates to latest examine beta, cleans up more code, always reference a searcher by it's indexer
This commit is contained in:
@@ -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";
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user