3

Linkbuttonファセットを生成し、結果をリピーター コントロール内にバインドできます。ORSitecore 7 でユーザーが同じファセット タイプの複数の値を選択すると、演算子を使用してファセット クエリを生成する際に問題が発生します。

それを解決するために何ができますか?

ありがとう

4

3 に答える 3

1

これは、PredicateBuilder を使用して特定のコード例を使用してこれを解決することに関するブログ投稿です。

http://www.nttdatasitecore.com/en/Blog/2013/November/Building-Facet-Queries-with-PredicateBuilder.aspx

于 2013-11-06T20:59:51.283 に答える
1

Sitecore でファセット検索を実装するには、PredicateBuilder クラスを使用してフィルター クエリを作成し、フィルター クエリをベース クエリに追加します。コードは以下に記載されています。

        List<PeopleFields> objPeoplefields = new List<PeopleFields>();
        IQueryable<PeopleFields> Query = null;
        var predicatePractice = Sitecore.ContentSearch.Utilities.PredicateBuilder.False<PeopleFields>();
        var predicateOffice = Sitecore.ContentSearch.Utilities.PredicateBuilder.False<PeopleFields>();

        using (var context = ContentSearchManager.GetIndex(SITECORE_WEB_INDEX).CreateSearchContext())
        {
            //Base query
            Query = context.GetQueryable<PeopleFields>().Where(i => i.FirstName.StartsWith(txtFirstName.Text)).Where(i => i.LastName.StartsWith(txtLastName.Text));
            foreach (string strselecteFacet in lstPracticefacetSelected)
            {
                //filter query
                predicatePractice = predicatePractice.Or(x => x.Practice.Like(strselecteFacet));
            }

            foreach (string strselecteFacet in lstOfficefacetSelected)
            {
                //Filter query
                predicateOffice = predicateOffice.Or(x => x.Office.Like(strselecteFacet));
            }

            //Joining the filter query alongwith base query
            if (lstPracticefacetSelected.Count > 0 && lstOfficefacetSelected.Count > 0)
                Query = Query.Filter(predicatePractice).Filter(predicateOffice);
            else if (lstPracticefacetSelected.Count > 0 && lstOfficefacetSelected.Count == 0)
                Query = Query.Filter(predicatePractice);
            else if (lstPracticefacetSelected.Count == 0 && lstOfficefacetSelected.Count > 0)
                Query = Query.Filter(predicateOffice);

            objPeoplefields = Query.ToList();
        }
于 2013-06-18T07:43:31.903 に答える