diff --git a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionVisitor.cs b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionVisitor.cs
index b265a5b587..7f5e479af6 100644
--- a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionVisitor.cs
+++ b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionVisitor.cs
@@ -20,6 +20,7 @@ namespace Umbraco.Core.Persistence.Querying
_mapper = mapper;
}
+ [Obsolete("Use the overload the specifies a SqlSyntaxProvider")]
public ModelToSqlExpressionVisitor()
: this(SqlSyntaxContext.SqlSyntaxProvider, MappingResolver.Current.ResolveMapperByType(typeof(T)))
{ }
diff --git a/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionVisitor.cs b/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionVisitor.cs
index e0a4f07e48..4569b95853 100644
--- a/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionVisitor.cs
+++ b/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionVisitor.cs
@@ -18,14 +18,13 @@ namespace Umbraco.Core.Persistence.Querying
public PocoToSqlExpressionVisitor(ISqlSyntaxProvider syntaxProvider)
: base(syntaxProvider)
{
-
+ _pd = new Database.PocoData(typeof(T));
}
[Obsolete("Use the overload the specifies a SqlSyntaxProvider")]
public PocoToSqlExpressionVisitor()
- : base(SqlSyntaxContext.SqlSyntaxProvider)
- {
- _pd = new Database.PocoData(typeof(T));
+ : this(SqlSyntaxContext.SqlSyntaxProvider)
+ {
}
protected override string VisitMemberAccess(MemberExpression m)
diff --git a/src/Umbraco.Tests/PublishedContent/LegacyExamineBackedMediaTests.cs b/src/Umbraco.Tests/PublishedContent/LegacyExamineBackedMediaTests.cs
index 5bf6a4edc5..f48887498e 100644
--- a/src/Umbraco.Tests/PublishedContent/LegacyExamineBackedMediaTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/LegacyExamineBackedMediaTests.cs
@@ -1,6 +1,8 @@
using System;
using System.Linq;
+using Lucene.Net.Analysis.Standard;
using Lucene.Net.Documents;
+using Lucene.Net.Index;
using Lucene.Net.Store;
using Moq;
using NUnit.Framework;
@@ -31,12 +33,15 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void Ensure_Children_Are_Sorted()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var result = searcher.Search(searcher.CreateSearchCriteria().Id(1111).Compile());
Assert.IsNotNull(result);
Assert.AreEqual(1, result.TotalItemCount);
@@ -60,12 +65,15 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void Ensure_Result_Has_All_Values()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var result = searcher.Search(searcher.CreateSearchCriteria().Id(1111).Compile());
Assert.IsNotNull(result);
Assert.AreEqual(1, result.TotalItemCount);
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
index 6ec347cc0f..eadc08d834 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
@@ -27,6 +27,7 @@ using UmbracoExamine;
using UmbracoExamine.DataServices;
using umbraco.BusinessLogic;
using System.Linq;
+using Lucene.Net.Index;
namespace Umbraco.Tests.PublishedContent
{
@@ -106,11 +107,14 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void Ensure_Children_Sorted_With_Examine()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var ctx = GetUmbracoContext("/test", 1234);
var cache = new ContextualPublishedMediaCache(new PublishedMediaCache(ctx.Application, searcher, indexer), ctx);
@@ -135,11 +139,14 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void Do_Not_Find_In_Recycle_Bin()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var ctx = GetUmbracoContext("/test", 1234);
var cache = new ContextualPublishedMediaCache(new PublishedMediaCache(ctx.Application, searcher, indexer), ctx);
@@ -175,11 +182,14 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void Children_With_Examine()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var ctx = GetUmbracoContext("/test", 1234);
var cache = new ContextualPublishedMediaCache(new PublishedMediaCache(ctx.Application, searcher, indexer), ctx);
@@ -197,11 +207,14 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void Descendants_With_Examine()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var ctx = GetUmbracoContext("/test", 1234);
var cache = new ContextualPublishedMediaCache(new PublishedMediaCache(ctx.Application, searcher, indexer), ctx);
@@ -219,11 +232,14 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void DescendantsOrSelf_With_Examine()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var ctx = GetUmbracoContext("/test", 1234);
var cache = new ContextualPublishedMediaCache(new PublishedMediaCache(ctx.Application, searcher, indexer), ctx);
@@ -241,12 +257,15 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void Ancestors_With_Examine()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
var ctx = GetUmbracoContext("/test", 1234);
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var cache = new ContextualPublishedMediaCache(new PublishedMediaCache(ctx.Application, searcher, indexer), ctx);
//we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace
@@ -260,12 +279,15 @@ namespace Umbraco.Tests.PublishedContent
[Test]
public void AncestorsOrSelf_With_Examine()
{
- using (var luceneDir = new RAMDirectory())
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
+ //var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir);
indexer.RebuildIndex();
var ctx = GetUmbracoContext("/test", 1234);
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ //var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
var cache = new ContextualPublishedMediaCache(new PublishedMediaCache(ctx.Application, searcher, indexer), ctx);
//we are using the media.xml media to test the examine results implementation, see the media.xml file in the ExamineHelpers namespace
diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj
index 6e20740bcb..f0fb6f5921 100644
--- a/src/Umbraco.Tests/Umbraco.Tests.csproj
+++ b/src/Umbraco.Tests/Umbraco.Tests.csproj
@@ -164,6 +164,7 @@
+
diff --git a/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs b/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs
index 3e7377f3b6..34c7a1f6ac 100644
--- a/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs
@@ -1,6 +1,8 @@
using System;
using System.Linq;
using Examine;
+using Lucene.Net.Analysis.Standard;
+using Lucene.Net.Index;
using Lucene.Net.Store;
using NUnit.Framework;
using Umbraco.Tests.TestHelpers;
@@ -15,53 +17,39 @@ namespace Umbraco.Tests.UmbracoExamine
[Test]
public void Events_Ignoring_Node()
{
- //change the parent id so that they are all ignored
- var existingCriteria = _indexer.IndexerData;
- _indexer.IndexerData = new IndexCriteria(existingCriteria.StandardFields, existingCriteria.UserFields, existingCriteria.IncludeNodeTypes, existingCriteria.ExcludeNodeTypes,
- 999); //change to 999
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
+ {
+ //change the parent id so that they are all ignored
+ var existingCriteria = indexer.IndexerData;
+ indexer.IndexerData = new IndexCriteria(existingCriteria.StandardFields, existingCriteria.UserFields, existingCriteria.IncludeNodeTypes, existingCriteria.ExcludeNodeTypes,
+ 999); //change to 999
- var isIgnored = false;
+ var isIgnored = false;
- EventHandler ignoringNode = (s, e) =>
- {
- isIgnored = true;
- };
+ EventHandler ignoringNode = (s, e) =>
+ {
+ isIgnored = true;
+ };
- _indexer.IgnoringNode += ignoringNode;
+ indexer.IgnoringNode += ignoringNode;
- //get a node from the data repo
- var node = _contentService.GetPublishedContentByXPath("//*[string-length(@id)>0 and number(@id)>0]")
- .Root
- .Elements()
- .First();
+ //get a node from the data repo
+ var node = _contentService.GetPublishedContentByXPath("//*[string-length(@id)>0 and number(@id)>0]")
+ .Root
+ .Elements()
+ .First();
- _indexer.ReIndexNode(node, IndexTypes.Content);
+ indexer.ReIndexNode(node, IndexTypes.Content);
- Assert.IsTrue(isIgnored);
-
+ Assert.IsTrue(isIgnored);
+ }
}
private readonly TestContentService _contentService = new TestContentService();
- private static UmbracoExamineSearcher _searcher;
- private static UmbracoContentIndexer _indexer;
- private Lucene.Net.Store.Directory _luceneDir;
-
- public override void Initialize()
- {
- base.Initialize();
-
- _luceneDir = new RAMDirectory();
- _indexer = IndexInitializer.GetUmbracoIndexer(_luceneDir);
- _indexer.RebuildIndex();
- _searcher = IndexInitializer.GetUmbracoSearcher(_luceneDir);
- }
-
- public override void TearDown()
- {
- base.TearDown();
- _luceneDir.Dispose();
- }
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
index f57b1af213..c7922b9d58 100644
--- a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
@@ -7,6 +7,7 @@ using Examine.LuceneEngine.Config;
using Examine.LuceneEngine.Providers;
using Lucene.Net.Analysis;
using Lucene.Net.Analysis.Standard;
+using Lucene.Net.Index;
using Lucene.Net.Store;
using Moq;
using Umbraco.Core;
@@ -33,7 +34,7 @@ namespace Umbraco.Tests.UmbracoExamine
internal static class IndexInitializer
{
public static UmbracoContentIndexer GetUmbracoIndexer(
- Directory luceneDir,
+ IndexWriter writer,
Analyzer analyzer = null,
IDataService dataService = null,
IContentService contentService = null,
@@ -178,15 +179,14 @@ namespace Umbraco.Tests.UmbracoExamine
var indexCriteria = indexSet.ToIndexCriteria(dataService, UmbracoContentIndexer.IndexFieldPolicies);
var i = new UmbracoContentIndexer(indexCriteria,
- luceneDir, //custom lucene directory
- dataService,
- contentService,
- mediaService,
- dataTypeService,
- userService,
- contentTypeService,
- analyzer,
- false)
+ writer,
+ dataService,
+ contentService,
+ mediaService,
+ dataTypeService,
+ userService,
+ contentTypeService,
+ false)
{
SupportUnpublishedContent = supportUnpublishedContent
};
@@ -197,13 +197,14 @@ namespace Umbraco.Tests.UmbracoExamine
return i;
}
- public static UmbracoExamineSearcher GetUmbracoSearcher(Directory luceneDir, Analyzer analyzer = null)
+
+ public static UmbracoExamineSearcher GetUmbracoSearcher(IndexWriter writer, Analyzer analyzer = null)
{
if (analyzer == null)
{
analyzer = new StandardAnalyzer(Version.LUCENE_29);
}
- return new UmbracoExamineSearcher(luceneDir, analyzer);
+ return new UmbracoExamineSearcher(writer, analyzer);
}
public static LuceneSearcher GetLuceneSearcher(Directory luceneDir)
diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs
index 5f3f5525c1..3f324bb2ed 100644
--- a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs
@@ -1,11 +1,11 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Linq;
using Examine;
using Examine.LuceneEngine;
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;
@@ -15,7 +15,6 @@ using UmbracoExamine;
namespace Umbraco.Tests.UmbracoExamine
{
-
///
/// Tests the standard indexing capabilities
///
@@ -30,9 +29,10 @@ namespace Umbraco.Tests.UmbracoExamine
public void Index_Protected_Content_Not_Indexed()
{
- using (var luceneDir = new RAMDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir))
- using (var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir))
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
indexer.RebuildIndex();
@@ -59,9 +59,10 @@ namespace Umbraco.Tests.UmbracoExamine
[Test]
public void Index_Move_Media_From_Non_Indexable_To_Indexable_ParentID()
{
- using (var luceneDir = new RAMDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir))
- using (var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir))
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
indexer.RebuildIndex();
@@ -77,7 +78,7 @@ namespace Umbraco.Tests.UmbracoExamine
//ensure that node 2112 doesn't exist
var results = searcher.Search(searcher.CreateSearchCriteria().Id(2112).Compile());
- Assert.AreEqual(0, results.Count());
+ Assert.AreEqual(0, results.TotalItemCount);
//get a node from the data repo (this one exists underneath 2222)
var node = mediaService.GetLatestMediaByXpath("//*[string-length(@id)>0 and number(@id)>0]")
@@ -103,19 +104,19 @@ namespace Umbraco.Tests.UmbracoExamine
//now ensure it's deleted
var newResults = searcher.Search(searcher.CreateSearchCriteria().Id(2112).Compile());
- Assert.AreEqual(1, newResults.Count());
+ Assert.AreEqual(1, newResults.TotalItemCount);
}
}
[Test]
- [Ignore]
public void Index_Move_Media_To_Non_Indexable_ParentID()
{
- using (var luceneDir = new RAMDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir))
- using (var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir))
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
indexer.RebuildIndex();
@@ -152,7 +153,7 @@ namespace Umbraco.Tests.UmbracoExamine
//now ensure it's deleted
var results = searcher.Search(searcher.CreateSearchCriteria().Id(2112).Compile());
- Assert.AreEqual(0, results.Count());
+ Assert.AreEqual(0, results.TotalItemCount);
}
}
@@ -164,9 +165,10 @@ namespace Umbraco.Tests.UmbracoExamine
[Test]
public void Index_Reindex_Content()
{
- using (var luceneDir = new RAMDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir, supportUnpublishedContent:true))
- using (var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir))
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer, supportUnpublishedContent: true))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
indexer.RebuildIndex();
@@ -175,10 +177,9 @@ namespace Umbraco.Tests.UmbracoExamine
//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);
- var writer = indexer.GetIndexWriter();
writer.DeleteDocuments(contentTerm);
writer.Commit();
-
+
//make sure the content is gone. This is done with lucene APIs, not examine!
var collector = new AllHitsCollector(false, true);
var query = new TermQuery(contentTerm);
@@ -205,13 +206,13 @@ namespace Umbraco.Tests.UmbracoExamine
/// This will delete an item from the index and ensure that all children of the node are deleted too!
///
[Test]
- [Ignore]
public void Index_Delete_Index_Item_Ensure_Heirarchy_Removed()
{
- using (var luceneDir = new RAMDirectory())
- using (var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir))
- using (var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir))
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
{
indexer.RebuildIndex();
@@ -221,10 +222,10 @@ namespace Umbraco.Tests.UmbracoExamine
//this node had children: 1141 & 1142, let's ensure they are also removed
var results = searcher.Search(searcher.CreateSearchCriteria().Id(1141).Compile());
- Assert.AreEqual(0, results.Count());
+ Assert.AreEqual(0, results.TotalItemCount);
results = searcher.Search(searcher.CreateSearchCriteria().Id(1142).Compile());
- Assert.AreEqual(0, results.Count());
+ Assert.AreEqual(0, results.TotalItemCount);
}
}
diff --git a/src/Umbraco.Tests/UmbracoExamine/RandomIdRAMDirectory.cs b/src/Umbraco.Tests/UmbracoExamine/RandomIdRAMDirectory.cs
new file mode 100644
index 0000000000..34b69274c8
--- /dev/null
+++ b/src/Umbraco.Tests/UmbracoExamine/RandomIdRAMDirectory.cs
@@ -0,0 +1,14 @@
+using System;
+using Lucene.Net.Store;
+
+namespace Umbraco.Tests.UmbracoExamine
+{
+ public class RandomIdRAMDirectory : RAMDirectory
+ {
+ private readonly string _lockId = Guid.NewGuid().ToString();
+ public override string GetLockID()
+ {
+ return _lockId;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
index 7eb92ad49d..f739286f98 100644
--- a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
@@ -8,6 +8,8 @@ using Examine.LuceneEngine.Providers;
using Lucene.Net.Store;
using NUnit.Framework;
using Examine.LuceneEngine.SearchCriteria;
+using Lucene.Net.Analysis.Standard;
+using Lucene.Net.Index;
using Umbraco.Tests.TestHelpers;
namespace Umbraco.Tests.UmbracoExamine
@@ -20,16 +22,17 @@ namespace Umbraco.Tests.UmbracoExamine
[Test]
public void Test_Sort_Order_Sorting()
{
- using (var luceneDir = new RAMDirectory())
- {
- var indexer = IndexInitializer.GetUmbracoIndexer(luceneDir, null,
+ using (var luceneDir = new RandomIdRAMDirectory())
+ using (var writer = new IndexWriter(luceneDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29), IndexWriter.MaxFieldLength.LIMITED))
+ using (var indexer = IndexInitializer.GetUmbracoIndexer(writer, null,
new TestDataService()
- {
- ContentService = new TestContentService(TestFiles.umbraco_sort)
- },
- supportUnpublishedContent:true);
- indexer.RebuildIndex();
- var searcher = IndexInitializer.GetUmbracoSearcher(luceneDir);
+ {
+ ContentService = new TestContentService(TestFiles.umbraco_sort)
+ },
+ supportUnpublishedContent: true))
+ using (var searcher = IndexInitializer.GetUmbracoSearcher(writer))
+ {
+ indexer.RebuildIndex();
var s = (LuceneSearcher)searcher;
var luceneSearcher = s.GetSearcher();
diff --git a/src/UmbracoExamine/BaseUmbracoIndexer.cs b/src/UmbracoExamine/BaseUmbracoIndexer.cs
index 9ff68b8685..ed9271c1c0 100644
--- a/src/UmbracoExamine/BaseUmbracoIndexer.cs
+++ b/src/UmbracoExamine/BaseUmbracoIndexer.cs
@@ -49,6 +49,7 @@ namespace UmbracoExamine
///
///
///
+ ///
protected BaseUmbracoIndexer(IIndexCriteria indexerData, DirectoryInfo indexPath, IDataService dataService, Analyzer analyzer, bool async)
: base(indexerData, indexPath, analyzer, async)
{
@@ -61,6 +62,19 @@ namespace UmbracoExamine
DataService = dataService;
}
+ ///
+ /// Creates an NRT indexer
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected BaseUmbracoIndexer(IIndexCriteria indexerData, IndexWriter writer, IDataService dataService, bool async)
+ : base(indexerData, writer, async)
+ {
+ DataService = dataService;
+ }
+
#endregion
///
diff --git a/src/UmbracoExamine/UmbracoContentIndexer.cs b/src/UmbracoExamine/UmbracoContentIndexer.cs
index c36ad37adb..f7e4c45f50 100644
--- a/src/UmbracoExamine/UmbracoContentIndexer.cs
+++ b/src/UmbracoExamine/UmbracoContentIndexer.cs
@@ -17,6 +17,7 @@ using Examine.LuceneEngine;
using Examine.LuceneEngine.Config;
using UmbracoExamine.Config;
using Lucene.Net.Analysis;
+using Lucene.Net.Index;
using Umbraco.Core.Persistence.Querying;
using IContentService = Umbraco.Core.Services.IContentService;
using IMediaService = Umbraco.Core.Services.IMediaService;
@@ -146,6 +147,34 @@ namespace UmbracoExamine
_contentTypeService = contentTypeService;
}
+ ///
+ /// Creates an NRT indexer
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public UmbracoContentIndexer(IIndexCriteria indexerData, IndexWriter writer, IDataService dataService,
+ IContentService contentService,
+ IMediaService mediaService,
+ IDataTypeService dataTypeService,
+ IUserService userService,
+ IContentTypeService contentTypeService,
+ bool async)
+ : base(indexerData, writer, dataService, async)
+ {
+ _contentService = contentService;
+ _mediaService = mediaService;
+ _dataTypeService = dataTypeService;
+ _userService = userService;
+ _contentTypeService = contentTypeService;
+ }
+
#endregion
#region Constants & Fields
diff --git a/src/UmbracoExamine/UmbracoExamineSearcher.cs b/src/UmbracoExamine/UmbracoExamineSearcher.cs
index 7a2a80c3fe..26b02c904e 100644
--- a/src/UmbracoExamine/UmbracoExamineSearcher.cs
+++ b/src/UmbracoExamine/UmbracoExamineSearcher.cs
@@ -51,12 +51,41 @@ namespace UmbracoExamine
///
public override string Name
{
- get
- {
- return _name;
- }
+ get { return _name; }
+ }
+
+ ///
+ /// Constructor to allow for creating an indexer at runtime
+ ///
+ ///
+ ///
+
+ public UmbracoExamineSearcher(DirectoryInfo indexPath, Analyzer analyzer)
+ : base(indexPath, analyzer)
+ {
}
+ ///
+ /// Constructor to allow for creating an indexer at runtime
+ ///
+ ///
+ ///
+ public UmbracoExamineSearcher(Lucene.Net.Store.Directory luceneDirectory, Analyzer analyzer)
+ : base(luceneDirectory, analyzer)
+ {
+ }
+
+ ///
+ /// Creates an NRT searcher
+ ///
+ ///
+ ///
+ public UmbracoExamineSearcher(IndexWriter writer, Analyzer analyzer)
+ : base(writer, analyzer)
+ {
+ }
+
+ #endregion
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
@@ -115,30 +144,6 @@ namespace UmbracoExamine
}
}
- ///
- /// Constructor to allow for creating an indexer at runtime
- ///
- ///
- ///
-
- public UmbracoExamineSearcher(DirectoryInfo indexPath, Analyzer analyzer)
- : base(indexPath, analyzer)
- {
- }
-
- ///
- /// Constructor to allow for creating an indexer at runtime
- ///
- ///
- ///
-
- public UmbracoExamineSearcher(Lucene.Net.Store.Directory luceneDirectory, Analyzer analyzer)
- : base(luceneDirectory, analyzer)
- {
- }
-
- #endregion
-
///
/// Used for unit tests
///