diff --git a/src/Orchard.Core.Tests/Indexing/DefaultIndexProviderTests.cs b/src/Orchard.Core.Tests/Indexing/DefaultIndexProviderTests.cs
index a50a50848..953853e88 100644
--- a/src/Orchard.Core.Tests/Indexing/DefaultIndexProviderTests.cs
+++ b/src/Orchard.Core.Tests/Indexing/DefaultIndexProviderTests.cs
@@ -155,7 +155,18 @@ namespace Orchard.Tests.Indexing {
Assert.That(searchBuilder.Get(1).Id, Is.EqualTo(1));
Assert.That(searchBuilder.Get(11).Id, Is.EqualTo(11));
Assert.That(searchBuilder.Get(111).Id, Is.EqualTo(111));
+ }
+
+ [Test]
+ public void TagsShouldBeRemoved() {
+ _provider.CreateIndex("default");
+ _provider.Store("default", _provider.New(1).Add("body", "
some content"));
+ _provider.Store("default", _provider.New(2).Add("body", "
some content", true));
+ var searchBuilder = _provider.CreateSearchBuilder("default");
+
+ Assert.That(searchBuilder.WithField("body", "hr").Search().Count(), Is.EqualTo(1));
+ Assert.That(searchBuilder.WithField("body", "hr").Search().First().Id, Is.EqualTo(1));
}
}
}
diff --git a/src/Orchard.Web/Core/Common/Handlers/BodyAspectHandler.cs b/src/Orchard.Web/Core/Common/Handlers/BodyAspectHandler.cs
index ed66cd1b7..c566e124f 100644
--- a/src/Orchard.Web/Core/Common/Handlers/BodyAspectHandler.cs
+++ b/src/Orchard.Web/Core/Common/Handlers/BodyAspectHandler.cs
@@ -10,7 +10,7 @@ namespace Orchard.Core.Common.Handlers {
Filters.Add(StorageFilter.For(bodyRepository));
OnIndexing((context, bodyAspect) => context.IndexDocument
- .Add("body", bodyAspect.Record.Text).Store(false)
+ .Add("body", bodyAspect.Record.Text, true).Store(false)
.Add("format", bodyAspect.Record.Format).Analyze(false));
}
}
diff --git a/src/Orchard.Web/Core/Indexing/Lucene/DefaultIndexDocument.cs b/src/Orchard.Web/Core/Indexing/Lucene/DefaultIndexDocument.cs
index b170f28a3..8c10ff43b 100644
--- a/src/Orchard.Web/Core/Indexing/Lucene/DefaultIndexDocument.cs
+++ b/src/Orchard.Web/Core/Indexing/Lucene/DefaultIndexDocument.cs
@@ -1,7 +1,10 @@
using System;
using System.Collections.Generic;
+using System.Web.Mvc;
using Lucene.Net.Documents;
using Orchard.Indexing;
+using Orchard.Mvc.Html;
+using Orchard.Utility.Extensions;
namespace Orchard.Core.Indexing.Lucene {
@@ -17,7 +20,15 @@ namespace Orchard.Core.Indexing.Lucene {
}
public IIndexDocument Add(string name, string value) {
+ return Add(name, value, false);
+ }
+
+ public IIndexDocument Add(string name, string value, bool removeTags) {
AppendPreviousField();
+ if(removeTags) {
+ value = value.RemoveTags();
+ }
+
_previousField = new Field(name, value, Field.Store.YES, Field.Index.ANALYZED);
return this;
}
@@ -27,6 +38,7 @@ namespace Orchard.Core.Indexing.Lucene {
_previousField = new Field(name, DateTools.DateToString(value, DateTools.Resolution.SECOND), Field.Store.YES, Field.Index.NOT_ANALYZED);
return this;
}
+
public IIndexDocument Add(string name, int value) {
AppendPreviousField();
_previousField = new NumericField(name, Field.Store.YES, true).SetIntValue(value);
diff --git a/src/Orchard/Indexing/IIndexDocument.cs b/src/Orchard/Indexing/IIndexDocument.cs
index 5cf9d4d6f..36abb1b22 100644
--- a/src/Orchard/Indexing/IIndexDocument.cs
+++ b/src/Orchard/Indexing/IIndexDocument.cs
@@ -8,20 +8,22 @@ namespace Orchard.Indexing {
IIndexDocument SetContentItemId(int documentId);
IIndexDocument Add(string name, string value);
+ IIndexDocument Add(string name, string value, bool removeTags);
IIndexDocument Add(string name, DateTime value);
IIndexDocument Add(string name, int value);
IIndexDocument Add(string name, bool value);
IIndexDocument Add(string name, float value);
///
- /// Whether to store the original value to the index
+ /// Whether to store the original value to the index.
///
IIndexDocument Store(bool store);
///
- /// Whether the content should be tokenized or not. If not, value will be taken as a whole
+ /// Whether the content should be tokenized or not. If not, value will be taken as a whole.
///
IIndexDocument Analyze(bool analyze);
+
}
}
\ No newline at end of file
diff --git a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs
index a8c741ae9..8615286b2 100644
--- a/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs
+++ b/src/Orchard/Mvc/Html/HtmlHelperExtensions.cs
@@ -94,10 +94,8 @@ namespace Orchard.Mvc.Html {
#region Excerpt
public static MvcHtmlString Excerpt(this HtmlHelper html, string markup, int length) {
- var tagRegex = new Regex("<[^<>]*>", RegexOptions.Singleline);
- var text = tagRegex.Replace(markup, "");
- return MvcHtmlString.Create(text.Ellipsize(length));
+ return MvcHtmlString.Create(markup.RemoveTags().Ellipsize(length));
}
#endregion
diff --git a/src/Orchard/Utility/Extensions/StringExtensions.cs b/src/Orchard/Utility/Extensions/StringExtensions.cs
index bbd10a13c..4689a43fe 100644
--- a/src/Orchard/Utility/Extensions/StringExtensions.cs
+++ b/src/Orchard/Utility/Extensions/StringExtensions.cs
@@ -29,5 +29,12 @@ namespace Orchard.Utility.Extensions {
? defaultValue
: text;
}
+
+ public static string RemoveTags(this string html) {
+ var tagRegex = new Regex("<[^<>]*>", RegexOptions.Singleline);
+ var text = tagRegex.Replace(html, "");
+
+ return text;
+ }
}
}
\ No newline at end of file