コード例 #1
0
        private static SortField Convert(IBrowsable browser, SortField sort)
        {
            string field        = sort.Field;
            var    facetHandler = browser.GetFacetHandler(field);

            if (facetHandler != null)
            {
                //browser.GetFacetHandler(field); // BUG? this does nothing with the result.
                BoboCustomSortField sortField = new BoboCustomSortField(field, sort.Reverse, facetHandler.GetDocComparatorSource());
                return(sortField);
            }
            else
            {
                return(sort);
            }
        }
コード例 #2
0
        private static DocComparatorSource GetComparatorSource(IBrowsable browser, SortField sf)
        {
            DocComparatorSource compSource = null;

            if (SortField.FIELD_DOC.Equals(sf))
            {
                compSource = new DocComparatorSource.DocIdDocComparatorSource();
            }
            else if (SortField.FIELD_SCORE.Equals(sf) || sf.Type == SortField.SCORE)
            {
                // we want to do reverse sorting regardless for relevance
                compSource = new ReverseDocComparatorSource(new DocComparatorSource.RelevanceDocComparatorSource());
            }
            else if (sf is BoboCustomSortField)
            {
                BoboCustomSortField custField = (BoboCustomSortField)sf;
                DocComparatorSource src       = custField.GetCustomComparatorSource();
                Debug.Assert(src != null);
                compSource = src;
            }
            else
            {
                IEnumerable <string> facetNames = browser.FacetNames;
                string sortName = sf.Field;
                if (facetNames.Contains(sortName))
                {
                    var handler = browser.GetFacetHandler(sortName);
                    Debug.Assert(handler != null);
                    compSource = handler.GetDocComparatorSource();
                }
                else
                {
                    // default lucene field
                    logger.Info("doing default lucene sort for: " + sf);
                    compSource = GetNonFacetComparatorSource(sf);
                }
            }
            bool reverse = sf.Reverse;

            if (reverse)
            {
                compSource = new ReverseDocComparatorSource(compSource);
            }
            compSource.IsReverse = reverse;
            return(compSource);
        }
コード例 #3
0
 private static SortField Convert(IBrowsable browser, SortField sort)
 {
     string field = sort.Field;
     var facetHandler = browser.GetFacetHandler(field);
     if (facetHandler != null)
     {
         //browser.GetFacetHandler(field); // BUG? this does nothing with the result.
         BoboCustomSortField sortField = new BoboCustomSortField(field, sort.Reverse, facetHandler.GetDocComparatorSource());
         return sortField;
     }
     else
     {
         return sort;
     }
 }