LinqHelper.CreateQuery
방법과 관련하여 실제 문제가 아니라 명확한 질문 유형입니다.Sitecore7 LinqHelper.CreateQuery Buggy?
따라서
이 메서드는 3 오버로드가 있습니다. 여기에 문제의 2 : 1. LinqHelper.CreateQuery<SearchResultItem>(searchContext, searchStringModel)
2. LinqHelper.CreateQuery<SearchResultItem>(searchContext, searchStringModel, startLocationItem)
는 [내가 여기에 추가 컨텍스트를 사용하므로 기본 null을 사용하지 않은] 특정에 함께 항목을 검색하기 위해 지금
,
을 컨텐츠 트리의 위치 I 쿼리를 사용하는 방법 1을 사용할 수 있습니다 (특정 폴더 아래에 예를 들어, 당신은 1000 개 항목이) :
query = "location:{FOLDER_GUID};+custom:my_filed_name|bla_bla"
완벽하게 작동합니다. 하지만 또한 다음과 같은 방법 2를 사용 할 수 있어야한다 (필자는 메소드 서명에서 이해 것과가 있다는 것입니다) :
SitecoreIndexableItem folderID = SitecoreIndexableItem)contextDatabase.GetItem({FOLDER_GUID});
var index = ContentSearchManager.GetIndex(new SitecoreIndexableItem(Sitecore.Context.Item));
using (var context = index.CreateSearchContext())
{
List<SearchStringModel> searchStringModel = new List<SearchStringModel>();
searchStringModel.Add(new SearchStringModel("my_field_name", "bla_bla"));
List<Sitecore.Data.Items.Item> resultItems = LinqHelper.CreateQuery(context, searchStringModel, folderID).Select(toItem => toItem.GetItem()).ToList();
}
문제는 위의 방법입니다 (방법 2) 검색은, 무엇을 잘 작동 작동하지 않습니다 "startLocationItem"(이 경우 folderID)입니다. 예를 들어
,내 전체 sitecore 트리에서가 포함 총 3 개 항목이있는 경우 "my_filed_name = bla_bla"하지만, 단 1 항목 "my_filed_name = bla_bla을"폴더 ({FOLDER_GUID}에 포함
, startLocationItem FOLDER_GUID = {} "에도 불구하고,이 경우의"perticular 폴더 ") THEN
,
방법 되돌아 CORRECT 1 개 항목() 그러나 방법 2 반환 항목 3, ... (I 해달라고 WHICH 생각이 맞음)
질문 :
1. 방법 1에서 "startLocationItem"의 정확한 목적은 무엇입니까?
2. "위치"필터 또는 "방법 2에 대해 startLocationItem"을 사용하면 어떤 이점이 있습니까?
고마워 스티븐 ... 정확히 내가 무엇을 찾고 있었습니까. 매우 도움이됩니다. –
안녕하세요. Stephen, LinqHelper를 통해 Sitecore에 LINQ를 사용하는 것이 매우 중요합니다. 나는 그것에 관한 질문을 하나 더 가지고있다. : LinqHelper.CreateQuery를 사용하여 데이터 소스 쿼리를 구문 분석하고 있는가? 마찬가지로 : var query = LinqHelper.CreateQuery (context, SearchStringModel.ExtractSearchQuery (queryString)) .Select (toItem => toItem.GetItem()). Take (10); 이 방법이 Sitecore 7에서 sitecore 7.2 rev로 어떻게 변경되었는지 확인했습니다. 가장 좋은 방법이 궁금합니다. 많은 감사가 전진합니다. –