mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-14 10:54:50 +08:00
Excluded html tags from indexed body content
--HG-- branch : dev
This commit is contained in:
@@ -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", "<hr>some content</hr>"));
|
||||
_provider.Store("default", _provider.New(2).Add("body", "<hr>some content</hr>", 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -10,7 +10,7 @@ namespace Orchard.Core.Common.Handlers {
|
||||
Filters.Add(StorageFilter.For(bodyRepository));
|
||||
|
||||
OnIndexing<BodyAspect>((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));
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
||||
/// <summary>
|
||||
/// Whether to store the original value to the index
|
||||
/// Whether to store the original value to the index.
|
||||
/// </summary>
|
||||
IIndexDocument Store(bool store);
|
||||
|
||||
/// <summary>
|
||||
/// 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.
|
||||
/// </summary>
|
||||
IIndexDocument Analyze(bool analyze);
|
||||
|
||||
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user