WIP - starts porting umbraco over to lucene 3 and Examine v2
This commit is contained in:
@@ -200,6 +200,19 @@
|
||||
|
||||
</dependentAssembly>
|
||||
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.0.3.0" newVersion="3.0.3.0" />
|
||||
</dependentAssembly>
|
||||
|
||||
<dependentAssembly>
|
||||
|
||||
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
|
||||
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.4.9.0" newVersion="1.4.9.0" />
|
||||
|
||||
</dependentAssembly>
|
||||
|
||||
</assemblyBinding>
|
||||
|
||||
</runtime>
|
||||
|
||||
@@ -148,7 +148,7 @@ namespace Umbraco.Tests.Cache.PublishedCache
|
||||
|
||||
var result = new SearchResult()
|
||||
{
|
||||
Id = 1234,
|
||||
LongId = 1234,
|
||||
Score = 1
|
||||
};
|
||||
result.Fields.Add("__IndexType", "media");
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
<HintPath>..\packages\AutoMapper.4.2.1\lib\net45\AutoMapper.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Examine, Version=0.1.68.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Examine.0.1.68.0\lib\Examine.dll</HintPath>
|
||||
<Reference Include="Examine, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Examine.2.0.0-beta8\lib\net45\Examine.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
||||
@@ -71,9 +71,49 @@
|
||||
<HintPath>..\packages\log4net.2.0.5\lib\net45-full\log4net.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
|
||||
<Reference Include="Lucene.Net, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Analyzers, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Analyzers.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Core, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.FastVectorHighlighter, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.FastVectorHighlighter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Highlighter, Version=2.3.2.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Highlighter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Memory, Version=1.0.0.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Memory.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Queries, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Queries.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Regex, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Regex.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.SimpleFacetedSearch, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.SimpleFacetedSearch.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Snowball, Version=2.0.0.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Snowball.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.SpellChecker, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.SpellChecker.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Owin, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
|
||||
|
||||
@@ -13,8 +13,6 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
[SetUp]
|
||||
public virtual void TestSetup()
|
||||
{
|
||||
UmbracoExamineSearcher.DisableInitializationCheck = true;
|
||||
BaseUmbracoIndexer.DisableInitializationCheck = true;
|
||||
ShortStringHelperResolver.Current = new ShortStringHelperResolver(new DefaultShortStringHelper(SettingsForTests.GetDefault()));
|
||||
|
||||
Resolution.Freeze();
|
||||
@@ -23,9 +21,6 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
[TearDown]
|
||||
public virtual void TestTearDown()
|
||||
{
|
||||
UmbracoExamineSearcher.DisableInitializationCheck = null;
|
||||
BaseUmbracoIndexer.DisableInitializationCheck = null;
|
||||
|
||||
//reset all resolvers
|
||||
ResolverCollection.ResetAll();
|
||||
//reset resolution itself (though this should be taken care of by resetting any of the resolvers above)
|
||||
|
||||
@@ -91,25 +91,38 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
|
||||
if (analyzer == null)
|
||||
{
|
||||
analyzer = new StandardAnalyzer(Version.LUCENE_29);
|
||||
analyzer = new StandardAnalyzer(Version.LUCENE_30);
|
||||
}
|
||||
|
||||
var indexSet = new IndexSet();
|
||||
var indexCriteria = indexSet.ToIndexCriteria(dataService, UmbracoContentIndexer.IndexFieldPolicies);
|
||||
|
||||
var i = new UmbracoContentIndexer(indexCriteria,
|
||||
luceneDir, //custom lucene directory
|
||||
dataService,
|
||||
contentService,
|
||||
mediaService,
|
||||
dataTypeService,
|
||||
userService,
|
||||
new[] { new DefaultUrlSegmentProvider() },
|
||||
analyzer,
|
||||
false);
|
||||
//var indexSet = new IndexSet();
|
||||
// var indexCriteria = indexSet.ToIndexCriteria(dataService, UmbracoContentIndexer.IndexFieldPolicies);
|
||||
|
||||
//var i = new UmbracoContentIndexer(indexCriteria,
|
||||
// luceneDir, //custom lucene directory
|
||||
// dataService,
|
||||
// contentService,
|
||||
// mediaService,
|
||||
// dataTypeService,
|
||||
// userService,
|
||||
// new[] { new DefaultUrlSegmentProvider() },
|
||||
// analyzer,
|
||||
// false);
|
||||
|
||||
//i.IndexSecondsInterval = 1;
|
||||
|
||||
var i = new UmbracoContentIndexer(
|
||||
new[]
|
||||
{
|
||||
new FieldDefinition("", FieldDefinitionTypes.FullText)
|
||||
},
|
||||
luceneDir,
|
||||
analyzer,
|
||||
contentService,
|
||||
mediaService,
|
||||
dataTypeService,
|
||||
userService,
|
||||
new[] { new DefaultUrlSegmentProvider() });
|
||||
|
||||
i.IndexingError += IndexingError;
|
||||
|
||||
return i;
|
||||
|
||||
@@ -3,14 +3,20 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Examine;
|
||||
using Examine.LuceneEngine;
|
||||
using Examine.LuceneEngine.Config;
|
||||
using Examine.LuceneEngine.Providers;
|
||||
using Examine.LuceneEngine.SearchCriteria;
|
||||
using Examine.SearchCriteria;
|
||||
using Lucene.Net.Analysis.Standard;
|
||||
using Lucene.Net.Index;
|
||||
using Lucene.Net.Search;
|
||||
using Lucene.Net.Store;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Core.Strings;
|
||||
using UmbracoExamine;
|
||||
using Version = Lucene.Net.Util.Version;
|
||||
|
||||
namespace Umbraco.Tests.UmbracoExamine
|
||||
{
|
||||
@@ -30,22 +36,27 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
public void Index_Protected_Content_Not_Indexed()
|
||||
{
|
||||
|
||||
var protectedQuery = new BooleanQuery();
|
||||
protectedQuery.Add(
|
||||
new BooleanClause(
|
||||
new TermQuery(new Term(LuceneIndexer.IndexTypeFieldName, IndexTypes.Content)),
|
||||
BooleanClause.Occur.MUST));
|
||||
using (var luceneDir = new RAMDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir))
|
||||
using (var searcher = indexer.GetSearcher().GetSearcher())
|
||||
{
|
||||
var protectedQuery = new BooleanQuery();
|
||||
protectedQuery.Add(
|
||||
new BooleanClause(
|
||||
new TermQuery(new Term(LuceneIndexer.IndexTypeFieldName, IndexTypes.Content)),
|
||||
Occur.MUST));
|
||||
|
||||
protectedQuery.Add(
|
||||
new BooleanClause(
|
||||
new TermQuery(new Term(LuceneIndexer.IndexNodeIdFieldName, TestContentService.ProtectedNode.ToString())),
|
||||
BooleanClause.Occur.MUST));
|
||||
protectedQuery.Add(
|
||||
new BooleanClause(
|
||||
new TermQuery(new Term(LuceneIndexer.IndexNodeIdFieldName, TestContentService.ProtectedNode.ToString())),
|
||||
Occur.MUST));
|
||||
|
||||
var collector = new AllHitsCollector(false, true);
|
||||
var s = _searcher.GetSearcher();
|
||||
s.Search(protectedQuery, collector);
|
||||
var collector = TopScoreDocCollector.Create(int.MaxValue, true);
|
||||
|
||||
searcher.Search(protectedQuery, collector);
|
||||
|
||||
Assert.AreEqual(0, collector.Count, "Protected node should not be indexed");
|
||||
Assert.AreEqual(0, collector.TotalHits, "Protected node should not be indexed");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -142,8 +153,6 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
{
|
||||
var s = (IndexSearcher)_searcher.GetSearcher();
|
||||
|
||||
|
||||
|
||||
//first delete all 'Content' (not media). This is done by directly manipulating the index with the Lucene API, not examine!
|
||||
|
||||
var contentTerm = new Term(LuceneIndexer.IndexTypeFieldName, IndexTypes.Content);
|
||||
@@ -197,30 +206,29 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
|
||||
private readonly TestMediaService _mediaService = new TestMediaService();
|
||||
|
||||
private static UmbracoExamineSearcher _searcher;
|
||||
private static UmbracoContentIndexer _indexer;
|
||||
//private static UmbracoExamineSearcher _searcher;
|
||||
//private static UmbracoContentIndexer _indexer;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Initialize and Cleanup
|
||||
|
||||
private Lucene.Net.Store.Directory _luceneDir;
|
||||
//private Lucene.Net.Store.Directory _luceneDir;
|
||||
|
||||
public override void TestTearDown()
|
||||
{
|
||||
base.TestTearDown();
|
||||
_luceneDir.Dispose();
|
||||
UmbracoExamineSearcher.DisableInitializationCheck = null;
|
||||
BaseUmbracoIndexer.DisableInitializationCheck = null;
|
||||
//_luceneDir.Dispose();
|
||||
}
|
||||
|
||||
public override void TestSetup()
|
||||
{
|
||||
base.TestSetup();
|
||||
_luceneDir = new RAMDirectory();
|
||||
_indexer = IndexInitializer.GetUmbracoIndexer(_luceneDir);
|
||||
_indexer.RebuildIndex();
|
||||
_searcher = IndexInitializer.GetUmbracoSearcher(_luceneDir);
|
||||
//_luceneDir = new RAMDirectory();
|
||||
|
||||
// _indexer = IndexInitializer.GetUmbracoIndexer(_luceneDir);
|
||||
//_indexer.RebuildIndex();
|
||||
//_searcher = IndexInitializer.GetUmbracoSearcher(_luceneDir);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
<packages>
|
||||
<package id="AspNetWebApi.SelfHost" version="4.0.20710.0" targetFramework="net45" />
|
||||
<package id="AutoMapper" version="4.2.1" targetFramework="net461" />
|
||||
<package id="Examine" version="0.1.68.0" targetFramework="net45" />
|
||||
<package id="Examine" version="2.0.0-beta8" targetFramework="net461" />
|
||||
<package id="LightInject" version="4.0.8" targetFramework="net461" />
|
||||
<package id="log4net" version="2.0.5" targetFramework="net461" />
|
||||
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net45" />
|
||||
<package id="Lucene.Net" version="3.0.3" targetFramework="net461" />
|
||||
<package id="Lucene.Net.Contrib" version="3.0.3" targetFramework="net461" />
|
||||
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" />
|
||||
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net45" />
|
||||
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" />
|
||||
|
||||
@@ -120,8 +120,8 @@
|
||||
<HintPath>..\packages\ClientDependency-Mvc5.1.8.0.0\lib\net45\ClientDependency.Core.Mvc.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Examine, Version=0.1.68.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Examine.0.1.68.0\lib\Examine.dll</HintPath>
|
||||
<Reference Include="Examine, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Examine.2.0.0-beta8\lib\net45\Examine.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
||||
@@ -140,9 +140,49 @@
|
||||
<HintPath>..\packages\log4net.2.0.5\lib\net45-full\log4net.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
|
||||
<Reference Include="Lucene.Net, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Analyzers, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Analyzers.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Core, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.FastVectorHighlighter, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.FastVectorHighlighter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Highlighter, Version=2.3.2.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Highlighter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Memory, Version=1.0.0.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Memory.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Queries, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Queries.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Regex, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Regex.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.SimpleFacetedSearch, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.SimpleFacetedSearch.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Snowball, Version=2.0.0.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Snowball.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.SpellChecker, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.SpellChecker.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.AspNet.Identity.Core">
|
||||
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.2.1\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
<package id="AutoMapper" version="4.2.1" targetFramework="net461" />
|
||||
<package id="ClientDependency" version="1.8.4" targetFramework="net45" />
|
||||
<package id="ClientDependency-Mvc5" version="1.8.0.0" targetFramework="net45" />
|
||||
<package id="Examine" version="0.1.68.0" targetFramework="net45" />
|
||||
<package id="Examine" version="2.0.0-beta8" targetFramework="net461" />
|
||||
<package id="ImageProcessor" version="2.3.3.0" targetFramework="net45" />
|
||||
<package id="ImageProcessor.Web" version="4.5.3.0" targetFramework="net45" />
|
||||
<package id="log4net" version="2.0.5" targetFramework="net461" />
|
||||
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net45" />
|
||||
<package id="Lucene.Net" version="3.0.3" targetFramework="net461" />
|
||||
<package id="Lucene.Net.Contrib" version="3.0.3" targetFramework="net461" />
|
||||
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net45" />
|
||||
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net45" />
|
||||
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" />
|
||||
|
||||
@@ -409,7 +409,10 @@
|
||||
<assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
||||
</dependentAssembly>
|
||||
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.0.3.0" newVersion="3.0.3.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
|
||||
|
||||
@@ -21,7 +21,10 @@ namespace Umbraco.Web.Search
|
||||
/// <returns></returns>
|
||||
public static int GetIndexDocumentCount(this LuceneIndexer indexer)
|
||||
{
|
||||
using (var reader = indexer.GetIndexWriter().GetReader())
|
||||
var searcher = indexer.GetSearcher().GetSearcher() as IndexSearcher;
|
||||
if (searcher == null) return 0;
|
||||
using (searcher)
|
||||
using (var reader = searcher.IndexReader)
|
||||
{
|
||||
return reader.NumDocs();
|
||||
}
|
||||
@@ -34,7 +37,10 @@ namespace Umbraco.Web.Search
|
||||
/// <returns></returns>
|
||||
public static int GetIndexFieldCount(this LuceneIndexer indexer)
|
||||
{
|
||||
using (var reader = indexer.GetIndexWriter().GetReader())
|
||||
var searcher = indexer.GetSearcher().GetSearcher() as IndexSearcher;
|
||||
if (searcher == null) return 0;
|
||||
using (searcher)
|
||||
using (var reader = searcher.IndexReader)
|
||||
{
|
||||
return reader.GetFieldNames(IndexReader.FieldOption.ALL).Count;
|
||||
}
|
||||
@@ -47,7 +53,10 @@ namespace Umbraco.Web.Search
|
||||
/// <returns></returns>
|
||||
public static bool IsIndexOptimized(this LuceneIndexer indexer)
|
||||
{
|
||||
using (var reader = indexer.GetIndexWriter().GetReader())
|
||||
var searcher = indexer.GetSearcher().GetSearcher() as IndexSearcher;
|
||||
if (searcher == null) return true;
|
||||
using (searcher)
|
||||
using (var reader = searcher.IndexReader)
|
||||
{
|
||||
return reader.IsOptimized();
|
||||
}
|
||||
@@ -74,9 +83,12 @@ namespace Umbraco.Web.Search
|
||||
/// <returns></returns>
|
||||
public static int GetDeletedDocumentsCount(this LuceneIndexer indexer)
|
||||
{
|
||||
using (var reader = indexer.GetIndexWriter().GetReader())
|
||||
var searcher = indexer.GetSearcher().GetSearcher() as IndexSearcher;
|
||||
if (searcher == null) return 0;
|
||||
using (searcher)
|
||||
using (var reader = searcher.IndexReader)
|
||||
{
|
||||
return reader.NumDeletedDocs();
|
||||
return reader.NumDeletedDocs;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,9 +113,8 @@
|
||||
<Reference Include="dotless.Core">
|
||||
<HintPath>..\packages\dotless.1.4.1.0\lib\dotless.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Examine, Version=0.1.68.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Examine.0.1.68.0\lib\Examine.dll</HintPath>
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<Reference Include="Examine, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Examine.2.0.0-beta8\lib\net45\Examine.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="HtmlAgilityPack, Version=1.4.9.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
|
||||
@@ -146,9 +145,49 @@
|
||||
<HintPath>..\packages\log4net.2.0.5\lib\net45-full\log4net.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
|
||||
<Reference Include="Lucene.Net, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Analyzers, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Analyzers.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Core, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.FastVectorHighlighter, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.FastVectorHighlighter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Highlighter, Version=2.3.2.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Highlighter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Memory, Version=1.0.0.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Memory.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Queries, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Queries.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Regex, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Regex.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.SimpleFacetedSearch, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.SimpleFacetedSearch.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Snowball, Version=2.0.0.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Snowball.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.SpellChecker, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.SpellChecker.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="MarkdownSharp, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Markdown.1.14.4\lib\net45\MarkdownSharp.dll</HintPath>
|
||||
|
||||
@@ -71,6 +71,14 @@
|
||||
<assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.0.3.0" newVersion="3.0.3.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.4.9.0" newVersion="1.4.9.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration>
|
||||
|
||||
@@ -3,14 +3,15 @@
|
||||
<package id="AutoMapper" version="4.2.1" targetFramework="net461" />
|
||||
<package id="ClientDependency" version="1.8.4" targetFramework="net45" />
|
||||
<package id="dotless" version="1.4.1.0" targetFramework="net45" />
|
||||
<package id="Examine" version="0.1.68.0" targetFramework="net45" />
|
||||
<package id="Examine" version="2.0.0-beta8" targetFramework="net461" />
|
||||
<package id="HtmlAgilityPack" version="1.4.9" targetFramework="net45" />
|
||||
<package id="LightInject" version="4.0.8" targetFramework="net461" />
|
||||
<package id="LightInject.Mvc" version="1.0.0.4" targetFramework="net45" />
|
||||
<package id="LightInject.Web" version="1.0.0.7" targetFramework="net461" />
|
||||
<package id="LightInject.WebApi" version="1.0.0.4" targetFramework="net45" />
|
||||
<package id="log4net" version="2.0.5" targetFramework="net461" />
|
||||
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net45" />
|
||||
<package id="Lucene.Net" version="3.0.3" targetFramework="net461" />
|
||||
<package id="Lucene.Net.Contrib" version="3.0.3" targetFramework="net461" />
|
||||
<package id="Markdown" version="1.14.4" targetFramework="net45" />
|
||||
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net45" />
|
||||
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net45" />
|
||||
|
||||
@@ -12,8 +12,11 @@ using UmbracoExamine.DataServices;
|
||||
using Examine;
|
||||
using System.IO;
|
||||
using System.Xml.Linq;
|
||||
using Examine.LuceneEngine.Faceting;
|
||||
using Examine.LuceneEngine.Indexing;
|
||||
using Lucene.Net.Store;
|
||||
using UmbracoExamine.LocalStorage;
|
||||
using Directory = Lucene.Net.Store.Directory;
|
||||
|
||||
namespace UmbracoExamine
|
||||
{
|
||||
@@ -34,31 +37,34 @@ namespace UmbracoExamine
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Constructor to allow for creating an indexer at runtime
|
||||
/// </summary>
|
||||
/// <param name="indexerData"></param>
|
||||
/// <param name="indexPath"></param>
|
||||
/// <param name="dataService"></param>
|
||||
/// <param name="analyzer"></param>
|
||||
protected BaseUmbracoIndexer(IIndexCriteria indexerData, DirectoryInfo indexPath, IDataService dataService, Analyzer analyzer, bool async)
|
||||
: base(indexerData, indexPath, analyzer, async)
|
||||
protected BaseUmbracoIndexer(IEnumerable<FieldDefinition> fieldDefinitions, Directory luceneDirectory, Analyzer defaultAnalyzer, FacetConfiguration facetConfiguration = null, IDictionary<string, Func<string, IIndexValueType>> indexValueTypes = null)
|
||||
: base(fieldDefinitions, luceneDirectory, defaultAnalyzer, facetConfiguration, indexValueTypes)
|
||||
{
|
||||
DataService = dataService;
|
||||
}
|
||||
|
||||
protected BaseUmbracoIndexer(IIndexCriteria indexerData, Lucene.Net.Store.Directory luceneDirectory, IDataService dataService, Analyzer analyzer, bool async)
|
||||
: base(indexerData, luceneDirectory, analyzer, async)
|
||||
{
|
||||
DataService = dataService;
|
||||
}
|
||||
// /// <summary>
|
||||
// /// Constructor to allow for creating an indexer at runtime
|
||||
// /// </summary>
|
||||
// /// <param name="indexerData"></param>
|
||||
// /// <param name="indexPath"></param>
|
||||
// /// <param name="dataService"></param>
|
||||
// /// <param name="analyzer"></param>
|
||||
// [Obsolete("Do not use the ctor using IIndexCriteria, it is obsolete")]
|
||||
// protected BaseUmbracoIndexer(IIndexCriteria indexerData, DirectoryInfo indexPath, IDataService dataService, Analyzer analyzer, bool async)
|
||||
// : base(indexerData, indexPath, analyzer, async)
|
||||
// {
|
||||
// DataService = dataService;
|
||||
// }
|
||||
|
||||
// [Obsolete("Do not use the ctor using IIndexCriteria, it is obsolete")]
|
||||
//protected BaseUmbracoIndexer(IIndexCriteria indexerData, Lucene.Net.Store.Directory luceneDirectory, IDataService dataService, Analyzer analyzer, bool async)
|
||||
// : base(indexerData, luceneDirectory, analyzer, async)
|
||||
//{
|
||||
// DataService = dataService;
|
||||
//}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Used for unit tests
|
||||
/// </summary>
|
||||
internal static bool? DisableInitializationCheck = null;
|
||||
|
||||
private readonly LocalTempStorageIndexer _localTempStorageIndexer = new LocalTempStorageIndexer();
|
||||
private BaseLuceneSearcher _internalTempStorageSearcher = null;
|
||||
|
||||
@@ -89,6 +95,7 @@ namespace UmbracoExamine
|
||||
/// </summary>
|
||||
public bool SupportUnpublishedContent { get; protected set; }
|
||||
|
||||
//TODO: Probably get rid of this right ?
|
||||
/// <summary>
|
||||
/// The data service used for retreiving and submitting data to the cms
|
||||
/// </summary>
|
||||
@@ -176,35 +183,7 @@ namespace UmbracoExamine
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Used to aquire the internal searcher
|
||||
/// </summary>
|
||||
private readonly object _internalSearcherLocker = new object();
|
||||
|
||||
protected override BaseSearchProvider InternalSearcher
|
||||
{
|
||||
get
|
||||
{
|
||||
//if temp local storage is configured use that, otherwise return the default
|
||||
if (UseTempStorage)
|
||||
{
|
||||
if (_internalTempStorageSearcher == null)
|
||||
{
|
||||
lock (_internalSearcherLocker)
|
||||
{
|
||||
if (_internalTempStorageSearcher == null)
|
||||
{
|
||||
_internalTempStorageSearcher = new LuceneSearcher(GetIndexWriter(), IndexingAnalyzer);
|
||||
}
|
||||
}
|
||||
}
|
||||
return _internalTempStorageSearcher;
|
||||
}
|
||||
|
||||
return base.InternalSearcher;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public override Lucene.Net.Store.Directory GetLuceneDirectory()
|
||||
{
|
||||
@@ -216,21 +195,7 @@ namespace UmbracoExamine
|
||||
|
||||
return base.GetLuceneDirectory();
|
||||
|
||||
}
|
||||
|
||||
protected override IndexWriter CreateIndexWriter()
|
||||
{
|
||||
//if temp local storage is configured use that, otherwise return the default
|
||||
if (UseTempStorage)
|
||||
{
|
||||
var directory = GetLuceneDirectory();
|
||||
return new IndexWriter(GetLuceneDirectory(), IndexingAnalyzer,
|
||||
DeletePolicyTracker.Current.GetPolicy(directory),
|
||||
IndexWriter.MaxFieldLength.UNLIMITED);
|
||||
}
|
||||
|
||||
return base.CreateIndexWriter();
|
||||
}
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// Override to check if we can actually initialize.
|
||||
@@ -306,18 +271,14 @@ namespace UmbracoExamine
|
||||
/// <returns></returns>
|
||||
protected bool CanInitialize()
|
||||
{
|
||||
//check the DisableInitializationCheck and ensure that it is not set to true
|
||||
if (!DisableInitializationCheck.HasValue || !DisableInitializationCheck.Value)
|
||||
//We need to check if we actually can initialize, if not then don't continue
|
||||
if (ApplicationContext.Current == null
|
||||
|| !ApplicationContext.Current.IsConfigured
|
||||
|| !ApplicationContext.Current.DatabaseContext.IsDatabaseConfigured)
|
||||
{
|
||||
//We need to check if we actually can initialize, if not then don't continue
|
||||
if (ApplicationContext.Current == null
|
||||
|| !ApplicationContext.Current.IsConfigured
|
||||
|| !ApplicationContext.Current.DatabaseContext.IsDatabaseConfigured)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace UmbracoExamine
|
||||
|
||||
public IndexDeletionPolicy GetPolicy(Lucene.Net.Store.Directory directory)
|
||||
{
|
||||
var resolved = _directories.GetOrAdd(directory.GetLockID(), s => new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy()));
|
||||
var resolved = _directories.GetOrAdd(directory.GetLockId(), s => new SnapshotDeletionPolicy(new KeepOnlyLastCommitDeletionPolicy()));
|
||||
return resolved;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,13 +34,7 @@ namespace UmbracoExamine.LocalStorage
|
||||
/// If initialization fails, it will be disabled and then this will just wrap the 'real directory'
|
||||
/// </summary>
|
||||
internal bool Enabled { get; set; }
|
||||
|
||||
[Obsolete("this is deprecated")]
|
||||
public override string[] List()
|
||||
{
|
||||
return _realDirectory.List();
|
||||
}
|
||||
|
||||
|
||||
public override string[] ListAll()
|
||||
{
|
||||
//always from the real dir
|
||||
@@ -85,18 +79,7 @@ namespace UmbracoExamine.LocalStorage
|
||||
_tempStorageDir.DeleteFile(name);
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("This is deprecated")]
|
||||
public override void RenameFile(string @from, string to)
|
||||
{
|
||||
_realDirectory.RenameFile(@from, to);
|
||||
|
||||
//perform on both dirs
|
||||
if (Enabled)
|
||||
{
|
||||
_tempStorageDir.RenameFile(@from, to);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>Returns the length of a file in the directory. </summary>
|
||||
public override long FileLength(string name)
|
||||
@@ -160,16 +143,7 @@ namespace UmbracoExamine.LocalStorage
|
||||
_realDirectory.Sync(name);
|
||||
_tempStorageDir.Sync(name);
|
||||
base.Sync(name);
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
{
|
||||
if (Enabled)
|
||||
{
|
||||
_tempStorageDir.Close();
|
||||
}
|
||||
_realDirectory.Close();
|
||||
}
|
||||
}
|
||||
|
||||
public override Lock MakeLock(string name)
|
||||
{
|
||||
@@ -185,15 +159,19 @@ namespace UmbracoExamine.LocalStorage
|
||||
/// "scopes" to the right index.
|
||||
///
|
||||
/// </summary>
|
||||
public override string GetLockID()
|
||||
public override string GetLockId()
|
||||
{
|
||||
return string.Concat(_realDirectory.GetLockID(), _tempStorageDir.GetLockID());
|
||||
return string.Concat(_realDirectory.GetLockId(), _tempStorageDir.GetLockId());
|
||||
}
|
||||
|
||||
public override LockFactory GetLockFactory()
|
||||
|
||||
public override LockFactory LockFactory
|
||||
{
|
||||
return _lockFactory;
|
||||
//return _realDirectory.GetLockFactory();
|
||||
get
|
||||
{
|
||||
return _lockFactory;
|
||||
//return _realDirectory.GetLockFactory();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override void ClearLock(string name)
|
||||
@@ -208,20 +186,21 @@ namespace UmbracoExamine.LocalStorage
|
||||
//}
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (Enabled)
|
||||
{
|
||||
_tempStorageDir.Dispose();
|
||||
}
|
||||
_realDirectory.Dispose();
|
||||
}
|
||||
|
||||
public override void SetLockFactory(LockFactory lf)
|
||||
{
|
||||
_lockFactory = lf;
|
||||
//_realDirectory.SetLockFactory(lf);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
if (Enabled)
|
||||
{
|
||||
_tempStorageDir.Dispose();
|
||||
}
|
||||
_realDirectory.Dispose();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -68,6 +68,8 @@ namespace UmbracoExamine.LocalStorage
|
||||
if (tempPath == null) throw new InvalidOperationException("Could not resolve a temp location from the " + localStorageDir.GetType() + " specified");
|
||||
TempPath = tempPath.FullName;
|
||||
|
||||
throw new NotSupportedException("Fix the local storage stuff!");
|
||||
|
||||
switch (localStorageType)
|
||||
{
|
||||
case LocalStorageType.Sync:
|
||||
@@ -126,13 +128,13 @@ namespace UmbracoExamine.LocalStorage
|
||||
}
|
||||
|
||||
break;
|
||||
case LocalStorageType.LocalOnly:
|
||||
if (Directory.Exists(TempPath) == false)
|
||||
{
|
||||
Directory.CreateDirectory(TempPath);
|
||||
}
|
||||
LuceneDirectory = DirectoryTracker.Current.GetDirectory(new DirectoryInfo(TempPath));
|
||||
break;
|
||||
//case LocalStorageType.LocalOnly:
|
||||
// if (Directory.Exists(TempPath) == false)
|
||||
// {
|
||||
// Directory.CreateDirectory(TempPath);
|
||||
// }
|
||||
// LuceneDirectory = DirectoryTracker.Current.GetDirectory(new DirectoryInfo(TempPath));
|
||||
// break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException("localStorageType");
|
||||
}
|
||||
@@ -324,10 +326,10 @@ namespace UmbracoExamine.LocalStorage
|
||||
var basePath = IOHelper.MapPath(configuredPath);
|
||||
|
||||
var commit = Snapshotter.Snapshot();
|
||||
var allSnapshotFiles = commit.GetFileNames()
|
||||
var allSnapshotFiles = commit.FileNames
|
||||
.Concat(new[]
|
||||
{
|
||||
commit.GetSegmentsFileName(),
|
||||
commit.SegmentsFileName,
|
||||
//we need to manually include the segments.gen file
|
||||
"segments.gen"
|
||||
})
|
||||
|
||||
@@ -21,13 +21,13 @@ namespace UmbracoExamine.LocalStorage
|
||||
|
||||
public override Lock MakeLock(string lockName)
|
||||
{
|
||||
return new MultiIndexLock(_master.GetLockFactory().MakeLock(lockName), _child.GetLockFactory().MakeLock(lockName));
|
||||
return new MultiIndexLock(_master.LockFactory.MakeLock(lockName), _child.LockFactory.MakeLock(lockName));
|
||||
}
|
||||
|
||||
public override void ClearLock(string lockName)
|
||||
{
|
||||
_master.GetLockFactory().ClearLock(lockName);
|
||||
_child.GetLockFactory().ClearLock(lockName);
|
||||
_master.LockFactory.ClearLock(lockName);
|
||||
_child.LockFactory.ClearLock(lockName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,18 +41,22 @@ namespace UmbracoExamine.LocalStorage
|
||||
}
|
||||
}
|
||||
|
||||
public override void Close()
|
||||
protected override void Dispose(bool isDisposing)
|
||||
{
|
||||
foreach (var output in _outputs)
|
||||
{
|
||||
output.Close();
|
||||
output.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public override long GetFilePointer()
|
||||
public override long FilePointer
|
||||
{
|
||||
//return the first
|
||||
return _outputs.First().GetFilePointer();
|
||||
get
|
||||
{
|
||||
//return the first
|
||||
return _outputs[0].FilePointer;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override void Seek(long pos)
|
||||
@@ -63,10 +67,14 @@ namespace UmbracoExamine.LocalStorage
|
||||
}
|
||||
}
|
||||
|
||||
public override long Length()
|
||||
public override long Length
|
||||
{
|
||||
//return the first
|
||||
return _outputs.First().GetFilePointer();
|
||||
get
|
||||
{
|
||||
//return the first
|
||||
return _outputs[0].FilePointer;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,8 +12,11 @@ using Umbraco.Core.Strings;
|
||||
using UmbracoExamine.DataServices;
|
||||
using Examine.LuceneEngine;
|
||||
using Examine.LuceneEngine.Config;
|
||||
using Examine.LuceneEngine.Faceting;
|
||||
using Examine.LuceneEngine.Indexing;
|
||||
using UmbracoExamine.Config;
|
||||
using Lucene.Net.Analysis;
|
||||
using Lucene.Net.Store;
|
||||
using IContentService = Umbraco.Core.Services.IContentService;
|
||||
using IMediaService = Umbraco.Core.Services.IMediaService;
|
||||
|
||||
@@ -46,29 +49,18 @@ namespace UmbracoExamine
|
||||
_urlSegmentProviders = UrlSegmentProviderResolver.Current.Providers;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Constructor to allow for creating an indexer at runtime
|
||||
/// </summary>
|
||||
/// <param name="indexerData"></param>
|
||||
/// <param name="luceneDirectory"></param>
|
||||
/// <param name="dataService"></param>
|
||||
/// <param name="contentService"></param>
|
||||
/// <param name="mediaService"></param>
|
||||
/// <param name="dataTypeService"></param>
|
||||
/// <param name="userService"></param>
|
||||
/// <param name="urlSegmentProviders"></param>
|
||||
/// <param name="analyzer"></param>
|
||||
/// <param name="async"></param>
|
||||
public UmbracoContentIndexer(IIndexCriteria indexerData, Lucene.Net.Store.Directory luceneDirectory, IDataService dataService,
|
||||
public UmbracoContentIndexer(
|
||||
IEnumerable<FieldDefinition> fieldDefinitions,
|
||||
Directory luceneDirectory,
|
||||
Analyzer defaultAnalyzer,
|
||||
IContentService contentService,
|
||||
IMediaService mediaService,
|
||||
IDataTypeService dataTypeService,
|
||||
IUserService userService,
|
||||
IEnumerable<IUrlSegmentProvider> urlSegmentProviders,
|
||||
Analyzer analyzer,
|
||||
bool async)
|
||||
: base(indexerData, luceneDirectory, dataService, analyzer, async)
|
||||
IMediaService mediaService,
|
||||
IDataTypeService dataTypeService,
|
||||
IUserService userService,
|
||||
IEnumerable<IUrlSegmentProvider> urlSegmentProviders,
|
||||
FacetConfiguration facetConfiguration = null,
|
||||
IDictionary<string, Func<string, IIndexValueType>> indexValueTypes = null)
|
||||
: base(fieldDefinitions, luceneDirectory, defaultAnalyzer, facetConfiguration, indexValueTypes)
|
||||
{
|
||||
ContentService = contentService;
|
||||
MediaService = mediaService;
|
||||
@@ -77,11 +69,41 @@ namespace UmbracoExamine
|
||||
_urlSegmentProviders = urlSegmentProviders;
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// Constructor to allow for creating an indexer at runtime
|
||||
///// </summary>
|
||||
///// <param name="indexerData"></param>
|
||||
///// <param name="luceneDirectory"></param>
|
||||
///// <param name="dataService"></param>
|
||||
///// <param name="contentService"></param>
|
||||
///// <param name="mediaService"></param>
|
||||
///// <param name="dataTypeService"></param>
|
||||
///// <param name="userService"></param>
|
||||
///// <param name="urlSegmentProviders"></param>
|
||||
///// <param name="analyzer"></param>
|
||||
///// <param name="async"></param>
|
||||
//public UmbracoContentIndexer(IIndexCriteria indexerData, Lucene.Net.Store.Directory luceneDirectory, IDataService dataService,
|
||||
// IContentService contentService,
|
||||
// IMediaService mediaService,
|
||||
// IDataTypeService dataTypeService,
|
||||
// IUserService userService,
|
||||
// IEnumerable<IUrlSegmentProvider> urlSegmentProviders,
|
||||
// Analyzer analyzer,
|
||||
// bool async)
|
||||
// : base(indexerData, luceneDirectory, dataService, analyzer, async)
|
||||
//{
|
||||
// ContentService = contentService;
|
||||
// MediaService = mediaService;
|
||||
// DataTypeService = dataTypeService;
|
||||
// UserService = userService;
|
||||
// _urlSegmentProviders = urlSegmentProviders;
|
||||
//}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constants & Fields
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Used to store the path of a content object
|
||||
@@ -279,27 +301,29 @@ namespace UmbracoExamine
|
||||
/// <param name="nodeId">ID of the node to delete</param>
|
||||
public override void DeleteFromIndex(string nodeId)
|
||||
{
|
||||
//find all descendants based on path
|
||||
var descendantPath = string.Format(@"\-1\,*{0}\,*", nodeId);
|
||||
var rawQuery = string.Format("{0}:{1}", IndexPathFieldName, descendantPath);
|
||||
var c = InternalSearcher.CreateSearchCriteria();
|
||||
var filtered = c.RawQuery(rawQuery);
|
||||
var results = InternalSearcher.Search(filtered);
|
||||
throw new NotImplementedException("Fix DeleteFromIndex!");
|
||||
|
||||
DataService.LogService.AddVerboseLog(int.Parse(nodeId), string.Format("DeleteFromIndex with query: {0} (found {1} results)", rawQuery, results.Count()));
|
||||
////find all descendants based on path
|
||||
//var descendantPath = string.Format(@"\-1\,*{0}\,*", nodeId);
|
||||
//var rawQuery = string.Format("{0}:{1}", IndexPathFieldName, descendantPath);
|
||||
//var c = InternalSearcher.CreateSearchCriteria();
|
||||
//var filtered = c.RawQuery(rawQuery);
|
||||
//var results = InternalSearcher.Search(filtered);
|
||||
|
||||
//need to create a delete queue item for each one found
|
||||
foreach (var r in results)
|
||||
{
|
||||
EnqueueIndexOperation(new IndexOperation()
|
||||
{
|
||||
Operation = IndexOperationType.Delete,
|
||||
Item = new IndexItem(null, "", r.Id.ToString())
|
||||
});
|
||||
//SaveDeleteIndexQueueItem(new KeyValuePair<string, string>(IndexNodeIdFieldName, r.Id.ToString()));
|
||||
}
|
||||
//DataService.LogService.AddVerboseLog(int.Parse(nodeId), string.Format("DeleteFromIndex with query: {0} (found {1} results)", rawQuery, results.Count()));
|
||||
|
||||
base.DeleteFromIndex(nodeId);
|
||||
////need to create a delete queue item for each one found
|
||||
//foreach (var r in results)
|
||||
//{
|
||||
// EnqueueIndexOperation(new IndexOperation()
|
||||
// {
|
||||
// Operation = IndexOperationType.Delete,
|
||||
// Item = new IndexItem(null, "", r.Id.ToString())
|
||||
// });
|
||||
// //SaveDeleteIndexQueueItem(new KeyValuePair<string, string>(IndexNodeIdFieldName, r.Id.ToString()));
|
||||
//}
|
||||
|
||||
//base.DeleteFromIndex(nodeId);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -82,17 +82,57 @@
|
||||
<AssemblyOriginatorKeyFile>..\Solution Items\TheFARM-Public.snk</AssemblyOriginatorKeyFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Examine, Version=0.1.68.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Examine.0.1.68.0\lib\Examine.dll</HintPath>
|
||||
<Reference Include="Examine, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Examine.2.0.0-beta8\lib\net45\Examine.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net, Version=2.9.4.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Lucene.Net.2.9.4.1\lib\net40\Lucene.Net.dll</HintPath>
|
||||
<Reference Include="Lucene.Net, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Analyzers, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Analyzers.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Core, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Core.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.FastVectorHighlighter, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.FastVectorHighlighter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Highlighter, Version=2.3.2.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Highlighter.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Memory, Version=1.0.0.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Memory.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Queries, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Queries.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Regex, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Regex.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.SimpleFacetedSearch, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.SimpleFacetedSearch.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.Snowball, Version=2.0.0.1, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.Snowball.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Lucene.Net.Contrib.SpellChecker, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Lucene.Net.Contrib.3.0.3\lib\net40\Lucene.Net.Contrib.SpellChecker.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System" />
|
||||
|
||||
@@ -133,12 +133,7 @@ namespace UmbracoExamine
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Used for unit tests
|
||||
/// </summary>
|
||||
internal static bool? DisableInitializationCheck = null;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Returns true if the Umbraco application is in a state that we can initialize the examine indexes
|
||||
/// </summary>
|
||||
@@ -146,16 +141,12 @@ namespace UmbracoExamine
|
||||
|
||||
protected bool CanInitialize()
|
||||
{
|
||||
//check the DisableInitializationCheck and ensure that it is not set to true
|
||||
if (!DisableInitializationCheck.HasValue || !DisableInitializationCheck.Value)
|
||||
//We need to check if we actually can initialize, if not then don't continue
|
||||
if (ApplicationContext.Current == null
|
||||
|| !ApplicationContext.Current.IsConfigured
|
||||
|| !ApplicationContext.Current.DatabaseContext.IsDatabaseConfigured)
|
||||
{
|
||||
//We need to check if we actually can initialize, if not then don't continue
|
||||
if (ApplicationContext.Current == null
|
||||
|| !ApplicationContext.Current.IsConfigured
|
||||
|| !ApplicationContext.Current.DatabaseContext.IsDatabaseConfigured)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -168,8 +159,10 @@ namespace UmbracoExamine
|
||||
/// <returns></returns>
|
||||
public override ISearchCriteria CreateSearchCriteria(string type, BooleanOperation defaultOperation)
|
||||
{
|
||||
var criteria = base.CreateSearchCriteria(type, defaultOperation) as LuceneSearchCriteria;
|
||||
criteria.NodeTypeAliasField = UmbracoContentIndexer.NodeTypeAliasFieldName;
|
||||
throw new NotImplementedException("Fix strongly typed CreateSearchCriteria");
|
||||
|
||||
var criteria = base.CreateSearchCriteria(type, defaultOperation) as LuceneSearchCriteria;
|
||||
//criteria.NodeTypeAliasField = UmbracoContentIndexer.NodeTypeAliasFieldName;
|
||||
return criteria;
|
||||
}
|
||||
|
||||
@@ -185,56 +178,49 @@ namespace UmbracoExamine
|
||||
.Where(x => x != UmbracoContentIndexer.NodeTypeAliasFieldName)
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
protected override IndexReader OpenNewReader()
|
||||
{
|
||||
var directory = GetLuceneDirectory();
|
||||
return IndexReader.Open(
|
||||
directory,
|
||||
//DeletePolicyTracker.Current.GetPolicy(directory),
|
||||
true);
|
||||
}
|
||||
|
||||
|
||||
protected override Lucene.Net.Store.Directory GetLuceneDirectory()
|
||||
{
|
||||
//local temp storage is not enabled, just return the default
|
||||
if (_localTempPath == null) return base.GetLuceneDirectory();
|
||||
throw new NotImplementedException("Fix local storage stuff");
|
||||
|
||||
//local temp storage is enabled, configure the local directory instance
|
||||
if (_localTempDirectory == null)
|
||||
{
|
||||
lock (Locker)
|
||||
{
|
||||
if (_localTempDirectory == null)
|
||||
{
|
||||
switch (_localStorageType)
|
||||
{
|
||||
case LocalStorageType.Sync:
|
||||
var fsDir = base.GetLuceneDirectory() as FSDirectory;
|
||||
if (fsDir != null)
|
||||
{
|
||||
_localTempDirectory = LocalTempStorageDirectoryTracker.Current.GetDirectory(
|
||||
new DirectoryInfo(_localTempPath),
|
||||
fsDir);
|
||||
}
|
||||
else
|
||||
{
|
||||
return base.GetLuceneDirectory();
|
||||
}
|
||||
break;
|
||||
case LocalStorageType.LocalOnly:
|
||||
_localTempDirectory = DirectoryTracker.Current.GetDirectory(new DirectoryInfo(_localTempPath));
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
////local temp storage is not enabled, just return the default
|
||||
//if (_localTempPath == null) return base.GetLuceneDirectory();
|
||||
|
||||
////local temp storage is enabled, configure the local directory instance
|
||||
//if (_localTempDirectory == null)
|
||||
//{
|
||||
// lock (Locker)
|
||||
// {
|
||||
// if (_localTempDirectory == null)
|
||||
// {
|
||||
// switch (_localStorageType)
|
||||
// {
|
||||
// case LocalStorageType.Sync:
|
||||
// var fsDir = base.GetLuceneDirectory() as FSDirectory;
|
||||
// if (fsDir != null)
|
||||
// {
|
||||
// _localTempDirectory = LocalTempStorageDirectoryTracker.Current.GetDirectory(
|
||||
// new DirectoryInfo(_localTempPath),
|
||||
// fsDir);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// return base.GetLuceneDirectory();
|
||||
// }
|
||||
// break;
|
||||
// case LocalStorageType.LocalOnly:
|
||||
// _localTempDirectory = DirectoryTracker.Current.GetDirectory(new DirectoryInfo(_localTempPath));
|
||||
// break;
|
||||
// default:
|
||||
// throw new ArgumentOutOfRangeException();
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
return _localTempDirectory;
|
||||
//return _localTempDirectory;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.Security;
|
||||
using System.Xml.Linq;
|
||||
using System.Xml.XPath;
|
||||
using Examine;
|
||||
using Examine.LuceneEngine;
|
||||
using Examine.LuceneEngine.Providers;
|
||||
using Examine.LuceneEngine.SearchCriteria;
|
||||
using Examine.SearchCriteria;
|
||||
@@ -32,7 +33,7 @@ namespace UmbracoExamine
|
||||
///<param name="provider"></param>
|
||||
///<param name="indexType"></param>
|
||||
///<returns></returns>
|
||||
internal static XPathNodeIterator Search(string searchText, bool useWildcards, BaseSearchProvider provider, string indexType)
|
||||
internal static XPathNodeIterator Search(string searchText, bool useWildcards, LuceneSearcher provider, string indexType)
|
||||
{
|
||||
if (provider == null) throw new ArgumentNullException("provider");
|
||||
|
||||
@@ -50,7 +51,7 @@ namespace UmbracoExamine
|
||||
/// <returns></returns>
|
||||
public static XPathNodeIterator Search(string searchText, bool useWildcards, string providerName, string indexType)
|
||||
{
|
||||
var provider = ExamineManager.Instance.SearchProviderCollection[providerName];
|
||||
var provider = (LuceneSearcher)ExamineManager.Instance.SearchProviderCollection[providerName];
|
||||
|
||||
return Search(searchText, useWildcards, provider, indexType);
|
||||
}
|
||||
@@ -193,7 +194,7 @@ namespace UmbracoExamine
|
||||
/// </summary>
|
||||
/// <param name="results">The results.</param>
|
||||
/// <returns></returns>
|
||||
private static XPathNodeIterator GetResultsAsXml(ISearchResults results)
|
||||
private static XPathNodeIterator GetResultsAsXml(ILuceneSearchResults results)
|
||||
{
|
||||
// create the XDocument
|
||||
XDocument doc = new XDocument();
|
||||
|
||||
@@ -30,6 +30,10 @@
|
||||
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
|
||||
</dependentAssembly>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.4.9.0" newVersion="1.4.9.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Examine" version="0.1.68.0" targetFramework="net45" />
|
||||
<package id="Lucene.Net" version="2.9.4.1" targetFramework="net45" />
|
||||
<package id="Examine" version="2.0.0-beta8" targetFramework="net461" />
|
||||
<package id="Lucene.Net" version="3.0.3" targetFramework="net461" />
|
||||
<package id="Lucene.Net.Contrib" version="3.0.3" targetFramework="net461" />
|
||||
<package id="SharpZipLib" version="0.86.0" targetFramework="net45" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user