mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-20 02:37:55 +08:00
Localized content is indexed and searched. During indexation, the culture of the content item is store within the index. If this is the master content item, then the Site's culture is used. When the search query is created, a filter is applied on the current request's culture.
--HG-- branch : dev
This commit is contained in:
@@ -5,6 +5,7 @@ using Orchard.Localization;
|
|||||||
using Orchard.ContentManagement;
|
using Orchard.ContentManagement;
|
||||||
using Orchard.ContentManagement.Handlers;
|
using Orchard.ContentManagement.Handlers;
|
||||||
using Orchard.Localization.Services;
|
using Orchard.Localization.Services;
|
||||||
|
using Orchard.Settings;
|
||||||
|
|
||||||
namespace Orchard.Core.Localization.Handlers {
|
namespace Orchard.Core.Localization.Handlers {
|
||||||
[UsedImplicitly]
|
[UsedImplicitly]
|
||||||
@@ -22,6 +23,8 @@ namespace Orchard.Core.Localization.Handlers {
|
|||||||
OnActivated<Localized>(InitializePart);
|
OnActivated<Localized>(InitializePart);
|
||||||
|
|
||||||
OnLoaded<Localized>(LazyLoadHandlers);
|
OnLoaded<Localized>(LazyLoadHandlers);
|
||||||
|
|
||||||
|
OnIndexed<Localized>((context, localized) => context.IndexDocument.Add("culture", localized.Culture != null ? localized.Culture.Culture : _cultureManager.GetSiteCulture()).Store(false).Analyze(false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Localizer T { get; set; }
|
public Localizer T { get; set; }
|
||||||
|
@@ -4,8 +4,10 @@ using System.Linq;
|
|||||||
using Orchard.Collections;
|
using Orchard.Collections;
|
||||||
using Orchard.Indexing;
|
using Orchard.Indexing;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
|
using Orchard.Localization.Services;
|
||||||
using Orchard.Search.Models;
|
using Orchard.Search.Models;
|
||||||
using Orchard.UI.Notify;
|
using Orchard.UI.Notify;
|
||||||
|
using System.Web;
|
||||||
|
|
||||||
namespace Orchard.Search.Services
|
namespace Orchard.Search.Services
|
||||||
{
|
{
|
||||||
@@ -14,11 +16,13 @@ namespace Orchard.Search.Services
|
|||||||
private const string SearchIndexName = "Search";
|
private const string SearchIndexName = "Search";
|
||||||
private readonly IIndexManager _indexManager;
|
private readonly IIndexManager _indexManager;
|
||||||
private readonly IEnumerable<IIndexNotifierHandler> _indexNotifierHandlers;
|
private readonly IEnumerable<IIndexNotifierHandler> _indexNotifierHandlers;
|
||||||
|
private readonly ICultureManager _cultureManager;
|
||||||
|
|
||||||
public SearchService(IOrchardServices services, IIndexManager indexManager, IEnumerable<IIndexNotifierHandler> indexNotifierHandlers) {
|
public SearchService(IOrchardServices services, IIndexManager indexManager, IEnumerable<IIndexNotifierHandler> indexNotifierHandlers, ICultureManager cultureManager) {
|
||||||
Services = services;
|
Services = services;
|
||||||
_indexManager = indexManager;
|
_indexManager = indexManager;
|
||||||
_indexNotifierHandlers = indexNotifierHandlers;
|
_indexNotifierHandlers = indexNotifierHandlers;
|
||||||
|
_cultureManager = cultureManager;
|
||||||
T = NullLocalizer.Instance;
|
T = NullLocalizer.Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,6 +41,10 @@ namespace Orchard.Search.Services
|
|||||||
.WithField("title", query)
|
.WithField("title", query)
|
||||||
.WithField("body", query);
|
.WithField("body", query);
|
||||||
|
|
||||||
|
if(HttpContext.Current != null) {
|
||||||
|
searchBuilder.WithField("culture", _cultureManager.GetCurrentCulture(HttpContext.Current));
|
||||||
|
}
|
||||||
|
|
||||||
var totalCount = searchBuilder.Count();
|
var totalCount = searchBuilder.Count();
|
||||||
if (pageSize != null)
|
if (pageSize != null)
|
||||||
searchBuilder = searchBuilder
|
searchBuilder = searchBuilder
|
||||||
|
Reference in New Issue
Block a user