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:
Sebastien Ros
2010-06-08 17:17:50 -07:00
parent 521b415f88
commit ecabd55428
2 changed files with 12 additions and 1 deletions

View File

@@ -5,6 +5,7 @@ using Orchard.Localization;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Handlers;
using Orchard.Localization.Services;
using Orchard.Settings;
namespace Orchard.Core.Localization.Handlers {
[UsedImplicitly]
@@ -22,6 +23,8 @@ namespace Orchard.Core.Localization.Handlers {
OnActivated<Localized>(InitializePart);
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; }

View File

@@ -4,8 +4,10 @@ using System.Linq;
using Orchard.Collections;
using Orchard.Indexing;
using Orchard.Localization;
using Orchard.Localization.Services;
using Orchard.Search.Models;
using Orchard.UI.Notify;
using System.Web;
namespace Orchard.Search.Services
{
@@ -14,11 +16,13 @@ namespace Orchard.Search.Services
private const string SearchIndexName = "Search";
private readonly IIndexManager _indexManager;
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;
_indexManager = indexManager;
_indexNotifierHandlers = indexNotifierHandlers;
_cultureManager = cultureManager;
T = NullLocalizer.Instance;
}
@@ -37,6 +41,10 @@ namespace Orchard.Search.Services
.WithField("title", query)
.WithField("body", query);
if(HttpContext.Current != null) {
searchBuilder.WithField("culture", _cultureManager.GetCurrentCulture(HttpContext.Current));
}
var totalCount = searchBuilder.Count();
if (pageSize != null)
searchBuilder = searchBuilder