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