Beispiel #1
0
 public FacetOrFilter(IFacetHandler facetHandler, string[] vals, bool takeCompliment, IFacetValueConverter valueConverter)
 {
     _facetHandler   = facetHandler;
     _vals           = vals;
     _takeCompliment = takeCompliment;
     _valueConverter = valueConverter;
 }
Beispiel #2
0
        public void TestAutoComplete()
        {
            var query = new MatchAllDocsQuery();

            Console.WriteLine(string.Format("query: <{0}>", query.ToString()));
            var request = new BrowseRequest()
            {
                Count  = 10,
                Offset = 0,
                Query  = query
            };

            //var prefix = "java"; // NightOwl888: Prefix is no longer a feature
            //Console.WriteLine(string.Format("prefix:{0}", prefix));
            //Console.WriteLine("=============================");

            var faceHandlers = new IFacetHandler[] { new SimpleFacetHandler("name") };
            var browser      = new BoboBrowser(BoboIndexReader.GetInstance(IndexReader.Open(_indexDir, true), faceHandlers));
            var factSpec     = new FacetSpec()
            {
                OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc
            };

            request.SetFacetSpec("name", factSpec);

            var result = browser.Browse(request);

            foreach (var facet in result.FacetMap["name"].GetFacets())
            {
                Console.WriteLine(facet.ToString());
            }
        }
Beispiel #3
0
 /// <summary>
 /// Sets a facet handler for each sub-browser instance.
 /// </summary>
 /// <param name="facetHandler">A facet handler.</param>
 public virtual void SetFacetHandler(IFacetHandler facetHandler)
 {
     foreach (IBrowsable subBrowser in m_subBrowsers)
     {
         subBrowser.SetFacetHandler(facetHandler);
     }
 }
Beispiel #4
0
            public override Explanation Explain(AtomicReaderContext context, int docid)
            {
                BoboSegmentReader boboReader = (BoboSegmentReader)context.Reader;
                IFacetHandler     fhandler   = boboReader.GetFacetHandler(m_parent.m_name);

                if (fhandler != null)
                {
                    BoboDocScorer scorer = null;
                    if (fhandler is IFacetScoreable)
                    {
                        scorer = ((IFacetScoreable)fhandler).GetDocScorer(boboReader, m_parent.m_scoringFactory, m_parent.m_boostMap);
                        Explanation exp1 = scorer.Explain(docid);
                        Explanation exp2 = new Explanation(m_parent.Boost, "boost");
                        Explanation expl = new Explanation();
                        expl.Description = "product of:";
                        expl.Value       = (exp1.Value * exp2.Value);
                        expl.AddDetail(exp1);
                        expl.AddDetail(exp2);
                        return(expl);
                    }
                    else
                    {
                        return(null);
                    }
                }
                return(null);
            }
Beispiel #5
0
            public FacetBasedBoostingScorer(FacetBasedBoostScorerBuilder parent, BoboSegmentReader reader, Scorer innerScorer)
                : base(innerScorer.Weight)
            {
                m_innerScorer = innerScorer;

                List <BoboDocScorer> list = new List <BoboDocScorer>();

                foreach (var boostEntry in parent.m_boostMaps)
                {
                    string        facetName = boostEntry.Key;
                    IFacetHandler handler   = reader.GetFacetHandler(facetName);
                    if (!(handler is IFacetScoreable))
                    {
                        throw new ArgumentException(facetName + " does not implement IFacetScoreable");
                    }
                    IFacetScoreable facetScoreable = (IFacetScoreable)handler;
                    BoboDocScorer   scorer         = facetScoreable.GetDocScorer(reader, parent.m_scoringFunctionFactory, boostEntry.Value);
                    if (scorer != null)
                    {
                        list.Add(scorer);
                    }
                }
                m_facetScorers = list.ToArray();
                m_docid        = -1;
            }
 public FacetOrFilter(IFacetHandler facetHandler, string[] vals, bool takeCompliment, IFacetValueConverter valueConverter)
 {
     _facetHandler = facetHandler;
     _vals = vals;
     _takeCompliment = takeCompliment;
     _valueConverter = valueConverter;
 }
 public MultiValueORFacetFilter(IFacetHandler facetHandler, string[] vals, IFacetValueConverter valueConverter, bool takeCompliment)
 {
     _facetHandler = facetHandler;
     _vals = vals;
     _valueConverter = valueConverter;
     _takeCompliment = takeCompliment;
 }
Beispiel #8
0
 public MultiValueORFacetFilter(IFacetHandler facetHandler, string[] vals, IFacetValueConverter valueConverter, bool takeCompliment)
 {
     m_facetHandler   = facetHandler;
     m_vals           = vals;
     m_valueConverter = valueConverter;
     m_takeCompliment = takeCompliment;
 }
Beispiel #9
0
 public BucketFacetCountCollectorSource(string name, BrowseSelection sel, FacetSpec ospec, IDictionary <string, string[]> predefinedBuckets, IFacetHandler dependOnFacetHandler)
 {
     m_name                 = name;
     m_sel                  = sel;
     m_ospec                = ospec;
     m_predefinedBuckets    = predefinedBuckets;
     m_dependOnFacetHandler = dependOnFacetHandler;
 }
 /// <summary>
 /// Sets a facet handler for each sub-browser instance.
 /// </summary>
 /// <param name="facetHandler">A facet handler.</param>
 public virtual void SetFacetHandler(IFacetHandler facetHandler)
 {
     IBrowsable[] subBrowsers = GetSubBrowsers();
     foreach (IBrowsable subBrowser in subBrowsers)
     {
         subBrowser.SetFacetHandler(facetHandler);
     }
 }
Beispiel #11
0
        /// <summary>Gets a facet handler</summary>
        /// <param name="fieldName">name</param>
        /// <returns>facet handler</returns>
        public virtual IFacetHandler GetFacetHandler(string fieldName)
        {
            IFacetHandler f = m_facetHandlerMap.Get(fieldName);

            if (f == null)
            {
                f = (IFacetHandler)this.GetRuntimeFacetHandler(fieldName);
            }
            return(f);
        }
Beispiel #12
0
 /// <summary>
 /// Gets a facet handler by facet name.
 /// </summary>
 /// <param name="name">The facet name.</param>
 /// <returns>The facet handler instance.</returns>
 public virtual IFacetHandler GetFacetHandler(string name)
 {
     foreach (IBrowsable subBrowser in m_subBrowsers)
     {
         IFacetHandler subHandler = subBrowser.GetFacetHandler(name);
         if (subHandler != null)
         {
             return(subHandler);
         }
     }
     return(null);
 }
 public override FacetDataNone Load(BoboSegmentReader reader)
 {
     m_dataFacetHandler = reader.GetFacetHandler(m_dataHandlerName);
     if (m_dataFacetHandler is RangeFacetHandler)
     {
         if (((RangeFacetHandler)m_dataFacetHandler).HasPredefinedRanges)
         {
             throw new NotSupportedException("underlying range facet handler should not have the predefined ranges");
         }
     }
     return(FacetDataNone.Instance);
 }
Beispiel #14
0
        public bool SkipProcess(IFacetHandler facetHandler, IBase baseObject, Facet facet, IGeneratorConfiguration generatorConfiguration)
        {
            if (facetHandler.GetType().Name == "WebAPIStartupGraphQLSchemasFacetHandler")
            {
                return(baseObject.Name == "RipleyEntities");
            }
            else if (facetHandler.GetType().Name == "WebAPIModelFacetHandler")
            {
                return(baseObject.ID == "/Model[@Model='HydraDevOps']/Entity_Container[@Container='HydraDevOpsContext']/Entity_Set[@EntitySet='Projects']/EntityType[@Entity='Project']");
            }

            return(false);
        }
Beispiel #15
0
        public override FacetDataNone Load(BoboSegmentReader reader)
        {
            IFacetHandler handler = reader.GetFacetHandler(m_inner);

            if (handler is RangeFacetHandler)
            {
                m_innerHandler = (RangeFacetHandler)handler;
                return(FacetDataNone.Instance);
            }
            else
            {
                throw new IOException("inner handler is not instance of RangeFacetHandler");
            }
        }
Beispiel #16
0
        public override RandomAccessFilter BuildRandomAccessFilter(string value, IDictionary <string, string> selectionProperty)
        {
            RandomAccessFilter retFilter = EmptyFilter.Instance;
            ComboSelection     comboSel  = ComboSelection.Parse(value, _separator);

            if (comboSel != null)
            {
                IFacetHandler handler = GetDependedFacetHandler(comboSel.Name);
                if (handler != null)
                {
                    retFilter = handler.BuildRandomAccessFilter(comboSel.Value, selectionProperty);
                }
            }
            return(retFilter);
        }
Beispiel #17
0
        public override int GetNumItems(BoboSegmentReader reader, int id)
        {
            IEnumerable <string> dependsOn = this.DependsOn;
            int count = 0;

            foreach (string depends in dependsOn)
            {
                IFacetHandler facetHandler = GetDependedFacetHandler(depends);
                string[]      fieldValues  = facetHandler.GetFieldValues(reader, id);
                if (fieldValues != null)
                {
                    count++;
                }
            }
            return(count);
        }
 public override FacetDataNone Load(BoboSegmentReader reader)
 {
     m_facetHandlers   = new List <SimpleFacetHandler>(m_fieldsSet.Count);
     m_facetHandlerMap = new Dictionary <string, SimpleFacetHandler>(m_fieldsSet.Count);
     foreach (string name in m_fieldsSet)
     {
         IFacetHandler handler = reader.GetFacetHandler(name);
         if (handler == null || !(handler is SimpleFacetHandler))
         {
             throw new InvalidOperationException("only simple facet handlers supported");
         }
         SimpleFacetHandler sfh = (SimpleFacetHandler)handler;
         m_facetHandlers.Add(sfh);
         m_facetHandlerMap.Add(name, sfh);
     }
     return(FacetDataNone.Instance);
 }
Beispiel #19
0
        public override RandomAccessFilter BuildRandomAccessOrFilter(string[] vals, IDictionary <string, string> prop, bool isNot)
        {
            IDictionary <string, IList <string> > valMap = ConvertMap(vals, _separator);

            List <RandomAccessFilter> filterList = new List <RandomAccessFilter>();

            foreach (var entry in valMap)
            {
                string        name         = entry.Key;
                IFacetHandler facetHandler = GetDependedFacetHandler(name);
                if (facetHandler == null)
                {
                    continue;
                }
                IList <string> selVals = entry.Value;
                if (selVals == null || selVals.Count == 0)
                {
                    continue;
                }
                RandomAccessFilter f = facetHandler.BuildRandomAccessOrFilter(selVals.ToArray(), prop, isNot);
                if (f == EmptyFilter.Instance)
                {
                    continue;
                }
                filterList.Add(f);
            }

            if (filterList.Count == 0)
            {
                return(EmptyFilter.Instance);
            }
            if (filterList.Count == 1)
            {
                return(filterList.Get(0));
            }

            if (isNot)
            {
                return(new RandomAccessAndFilter(filterList));
            }
            else
            {
                return(new RandomAccessOrFilter(filterList));
            }
        }
Beispiel #20
0
        public override string[] GetFieldValues(BoboIndexReader reader, int id)
        {
            IEnumerable <string> dependsOn = this.DependsOn;
            List <string>        valueList = new List <string>();

            foreach (string depends in dependsOn)
            {
                IFacetHandler facetHandler = GetDependedFacetHandler(depends);
                string[]      fieldValues  = facetHandler.GetFieldValues(reader, id);
                foreach (string fieldVal in fieldValues)
                {
                    StringBuilder buf = new StringBuilder();
                    buf.Append(depends).Append(_separator).Append(fieldVal);
                    valueList.Add(buf.ToString());
                }
            }
            return(valueList.ToArray());
        }
Beispiel #21
0
        /// <summary>
        /// Créé une nouvelle instance de ElasticStore.
        /// </summary>
        /// <param name="dataSourceName">Nom de la datasource.</param>
        public ElasticStore(string dataSourceName)
        {
            try {
                _definition       = DocumentDescriptor.GetDefinition(typeof(TDocument));
                _documentTypeName = _definition.DocumentTypeName;
                _dataSourceName   = dataSourceName ?? throw new ArgumentNullException("dataSourceName");
                _indexName        = ElasticManager.Instance.LoadSearchSettings(_dataSourceName).IndexName;
                _standardHandler  = new StandardFacetHandler <TDocument>(_definition);
                _portfolioHandler = new PortfolioFacetHandler <TDocument>(_definition);
            } catch (Exception e) {
                if (_log.IsErrorEnabled)
                {
                    _log.Error("Echec d'instanciation du store.", e);
                }

                throw new NotSupportedException("Search Broker<" + typeof(TDocument).FullName + "> " + e.Message, e);
            }
        }
Beispiel #22
0
        public void TestRangeFacetHandler()
        {
            var query = new MatchAllDocsQuery();

            Console.WriteLine(string.Format("query: <{0}>", query.ToString()));

            var testRangeFacetHandlers = new List <IFacetHandler>();

            //testRangeFacetHandlers.Add(new RangeFacetHandler("year", true));//auto range // NightOwl888 - Auto range is no longer a feature.
            testRangeFacetHandlers.Add(new RangeFacetHandler("year", new List <string>(new string[] { "[* TO 2000]", "[2000 TO 2005]", "[2006 TO 2010]", "[2011 TO *]" })));
            //testRangeFacetHandlers.Add(new RangeFacetHandler("price", "price", new NumberFieldFactory(), true)); // NightOwl888 - Auto range is no longer a feature.

            for (var i = 0; i < testRangeFacetHandlers.Count; i++)
            {
                var request = new BrowseRequest()
                {
                    Count  = 100,
                    Offset = 0,
                    Query  = query,
                    Sort   = new Lucene.Net.Search.Sort(new SortField("price", SortField.DOUBLE, false)).GetSort()
                };

                var sectionFilter = new BrowseSelection("category");
                sectionFilter.NotValues          = new string[] { "5" };
                sectionFilter.SelectionOperation = BrowseSelection.ValueOperation.ValueOperationAnd;
                request.AddSelection(sectionFilter);

                var faceHandler  = testRangeFacetHandlers[i];
                var faceHandlers = new IFacetHandler[] { faceHandler, new SimpleFacetHandler("category") };
                var browser      = new BoboBrowser(BoboIndexReader.GetInstance(IndexReader.Open(_indexDir, true), faceHandlers));
                var factSpec     = new FacetSpec()
                {
                    OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc
                };
                request.SetFacetSpec(faceHandler.Name, factSpec);
                var result = browser.Browse(request);
                Console.WriteLine(string.Format("total hits:{0}", result.NumHits));
                foreach (var facet in result.FacetMap[faceHandler.Name].GetFacets())
                {
                    Console.WriteLine(facet.ToString());
                }
                Console.WriteLine("");
            }
        }
Beispiel #23
0
        private void LoadFacetHandler(string name, IList <string> loaded, IList <string> visited, WorkArea workArea)
        {
            IFacetHandler facetHandler = m_facetHandlerMap.Get(name);

            if (facetHandler != null && !loaded.Contains(name))
            {
                visited.Add(name);
                var dependsOn = facetHandler.DependsOn;
                if (dependsOn.Count > 0)
                {
                    foreach (var f in dependsOn)
                    {
                        if (name.Equals(f))
                        {
                            continue;
                        }
                        if (!loaded.Contains(f))
                        {
                            if (visited.Contains(f))
                            {
                                throw new IOException("Facet handler dependency cycle detected, facet handler: " + name + " not loaded");
                            }
                            LoadFacetHandler(f, loaded, visited, workArea);
                        }
                        if (!loaded.Contains(f))
                        {
                            throw new IOException("unable to load facet handler: " + f);
                        }
                        facetHandler.PutDependedFacetHandler(m_facetHandlerMap[f]);
                    }
                }

                long start = System.Environment.TickCount;
                facetHandler.LoadFacetData(this, workArea);
                long end = System.Environment.TickCount;
                if (logger.IsDebugEnabled())
                {
                    StringBuilder buf = new StringBuilder();
                    buf.Append("facetHandler loaded: ").Append(name).Append(", took: ").Append(end - start).Append(" ms");
                    logger.Debug(buf.ToString());
                }
                loaded.Add(name);
            }
        }
Beispiel #24
0
            // NOTE: The Weight.Scorer method lost the scoreDocsInOrder and topScorer parameters between
            // Lucene 4.3.0 and 4.8.0. They are not used by BoboBrowse anyway, so the code here diverges
            // from the original Java source to remove these two parameters.

            // public override Scorer Scorer(AtomicReaderContext context, bool scoreDocsInOrder, bool topScorer, Bits acceptDocs)
            public override Scorer GetScorer(AtomicReaderContext context, IBits acceptDocs)
            {
                AtomicReader reader = context.AtomicReader;

                if (reader is BoboSegmentReader)
                {
                    BoboSegmentReader boboReader = (BoboSegmentReader)reader;
                    IFacetHandler     fhandler   = boboReader.GetFacetHandler(m_parent.m_name);
                    if (fhandler != null)
                    {
                        DocIdSetIterator   dociter = null;
                        RandomAccessFilter filter  = fhandler.BuildFilter(m_parent.m_sel);
                        if (filter != null)
                        {
                            RandomAccessDocIdSet docset = filter.GetRandomAccessDocIdSet(boboReader);
                            if (docset != null)
                            {
                                dociter = BuildIterator(docset, boboReader, acceptDocs);
                            }
                        }
                        if (dociter == null)
                        {
                            dociter = new MatchAllDocIdSetIterator(reader, acceptDocs);
                        }
                        BoboDocScorer scorer = null;
                        if (fhandler is IFacetScoreable)
                        {
                            scorer = ((IFacetScoreable)fhandler).GetDocScorer(boboReader, m_parent.m_scoringFactory, m_parent.m_boostMap);
                        }
                        return(new FacetTermScorer(m_parent, m_similarity, dociter, scorer));
                    }
                    else
                    {
                        logger.Error("FacetHandler is not defined for the field: " + m_parent.m_name);
                    }
                    return(null);
                }
                else
                {
                    throw new IOException("index reader not instance of " + typeof(BoboSegmentReader));
                }
            }
Beispiel #25
0
 public override Scorer Scorer(IndexReader reader, bool scoreDocsInOrder, bool topScorer)
 {
     if (reader is BoboIndexReader)
     {
         BoboIndexReader boboReader = (BoboIndexReader)reader;
         TermDocs        termDocs   = boboReader.TermDocs(null);
         IFacetHandler   fhandler   = boboReader.GetFacetHandler(parent._name);
         if (fhandler != null)
         {
             DocIdSetIterator   dociter = null;
             RandomAccessFilter filter  = fhandler.BuildFilter(parent._sel);
             if (filter != null)
             {
                 RandomAccessDocIdSet docset = filter.GetRandomAccessDocIdSet(boboReader);
                 if (docset != null)
                 {
                     dociter = BuildIterator(docset, termDocs);
                 }
             }
             if (dociter == null)
             {
                 dociter = new MatchAllDocIdSetIterator(reader);
             }
             BoboDocScorer scorer = null;
             if (fhandler is IFacetScoreable)
             {
                 scorer = ((IFacetScoreable)fhandler).GetDocScorer(boboReader, parent._scoringFactory, parent._boostMap);
             }
             return(new FacetTermScorer(parent, _similarity, dociter, scorer));
         }
         else
         {
             logger.Error("FacetHandler is not defined for the field: " + parent._name);
         }
         return(null);
     }
     else
     {
         throw new IOException("index reader not instance of " + typeof(BoboIndexReader));
     }
 }
Beispiel #26
0
            internal FacetOrRandomAccessDocIdSet(IFacetHandler facetHandler, BoboIndexReader reader,
                                                 string[] vals, IFacetValueConverter valConverter, bool takeCompliment)
            {
                _dataCache  = facetHandler.GetFacetData <FacetDataCache>(reader);
                _orderArray = _dataCache.OrderArray;
                _index      = valConverter.Convert(_dataCache, vals);

                _bitset = new OpenBitSet(_dataCache.ValArray.Count);
                foreach (int i in _index)
                {
                    _bitset.FastSet(i);
                }

                if (takeCompliment)
                {
                    // flip the bits
                    for (int i = 0; i < _dataCache.ValArray.Count; ++i)
                    {
                        _bitset.FastFlip(i);
                    }
                }
            }
Beispiel #27
0
        public void TestSimpleBrowser()
        {
            var query = new TermQuery(new Term("name", "asp.net"));

            Console.WriteLine(string.Format("query: <{0}>", query.ToString()));
            var request = new BrowseRequest()
            {
                Count  = 10,
                Offset = 0,
                Query  = query,
                Sort   = new Lucene.Net.Search.Sort(new SortField("price", SortField.DOUBLE, false)).GetSort()
            };

            var facetHandlers = new IFacetHandler[] { new SimpleFacetHandler("category") };
            var browser       = new BoboBrowser(BoboIndexReader.GetInstance(IndexReader.Open(_indexDir, true), facetHandlers));
            var facetSpec     = new FacetSpec()
            {
                OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc, MinHitCount = 1
            };

            request.SetFacetSpec("category", facetSpec);

            var result = browser.Browse(request);

            Console.WriteLine(string.Format("total hits:{0}", result.NumHits));
            Console.WriteLine("===========================");
            foreach (var facet in result.FacetMap["category"].GetFacets())
            {
                var category = _categories.First(k => k.Value == int.Parse(facet.Value.ToString()));
                Console.WriteLine("{0}:({1})", category.Key, facet.FacetValueHitCount);
            }
            Console.WriteLine("===========================");
            for (var i = 0; i < result.Hits.Length; i++)
            {
                var doc      = browser.Doc(result.Hits[i].DocId);
                var category = _categories.First(k => k.Value == int.Parse(doc.GetField("category").StringValue)).Key;
                Console.WriteLine(string.Format("{2} - {0} ${1} by {3}", doc.GetField("name").StringValue, doc.GetField("price").StringValue, category, doc.GetField("author").StringValue));
            }
        }
Beispiel #28
0
        public virtual Explanation Explain(AtomicReader indexReader, int docid, Explanation innerExplaination)
        {
            if (!(indexReader is BoboSegmentReader))
            {
                throw new ArgumentException("IndexReader is not BoboSegmentReader");
            }
            BoboSegmentReader reader = (BoboSegmentReader)indexReader;

            Explanation exp = new Explanation();

            exp.Description = "FacetBasedBoost";

            float boost = 1.0f;

            foreach (var boostEntry in m_boostMaps)
            {
                string        facetName = boostEntry.Key;
                IFacetHandler handler   = reader.GetFacetHandler(facetName);
                if (!(handler is IFacetScoreable))
                {
                    throw new ArgumentException(facetName + " does not implement IFacetScoreable");
                }

                IFacetScoreable facetScoreable = (IFacetScoreable)handler;
                BoboDocScorer   scorer         = facetScoreable.GetDocScorer(reader, m_scoringFunctionFactory, boostEntry.Value);
                float           facetBoost     = scorer.Score(docid);

                Explanation facetExp = new Explanation();
                facetExp.Description = facetName;
                facetExp.Value       = facetBoost;
                facetExp.AddDetail(scorer.Explain(docid));
                boost *= facetBoost;
                exp.AddDetail(facetExp);
            }
            exp.Value = boost;
            exp.AddDetail(innerExplaination);
            return(exp);
        }
Beispiel #29
0
        /// <summary>
        /// Sets runtime facet handler. If has the same name as a preload handler, for the
        /// duration of this browser, this one will be used.
        /// </summary>
        /// <param name="facetHandler">Runtime facet handler</param>
        public virtual void SetFacetHandler(IFacetHandler facetHandler)
        {
            IEnumerable<string> dependsOn = facetHandler.DependsOn;
            BoboIndexReader reader = (BoboIndexReader)IndexReader;
            if (dependsOn.Count() > 0)
            {
                foreach (var fn in dependsOn)
                {
                    var f = _runtimeFacetHandlerMap.Get(fn);
                    if (f == null)
		            {
			            f = reader.GetFacetHandler(fn);
		            }
		            if (f == null)
		            {
			            throw new System.IO.IOException("depended on facet handler: " + fn + ", but is not found");
		            }
		            facetHandler.PutDependedFacetHandler(f);
                }
            }
            facetHandler.LoadFacetData(reader);
            _runtimeFacetHandlerMap.Put(facetHandler.Name, facetHandler);
        }
Beispiel #30
0
        /// <summary>
        /// Sets runtime facet handler. If has the same name as a preload handler, for the
        /// duration of this browser, this one will be used.
        /// </summary>
        /// <param name="facetHandler">Runtime facet handler</param>
        public virtual void SetFacetHandler(IFacetHandler facetHandler)
        {
            IEnumerable <string> dependsOn = facetHandler.DependsOn;
            BoboIndexReader      reader    = (BoboIndexReader)IndexReader;

            if (dependsOn.Count() > 0)
            {
                foreach (var fn in dependsOn)
                {
                    var f = _runtimeFacetHandlerMap.Get(fn);
                    if (f == null)
                    {
                        f = reader.GetFacetHandler(fn);
                    }
                    if (f == null)
                    {
                        throw new System.IO.IOException("depended on facet handler: " + fn + ", but is not found");
                    }
                    facetHandler.PutDependedFacetHandler(f);
                }
            }
            facetHandler.LoadFacetData(reader);
            _runtimeFacetHandlerMap.Put(facetHandler.Name, facetHandler);
        }
 public FacetRangeFilter(IFacetHandler facetHandler, string rangeString)
 {
     _facetHandler = facetHandler;
     _rangeString = rangeString;
 }
Beispiel #32
0
 public MultiValueORFacetFilter(IFacetHandler facetHandler, string[] vals, bool takeCompliment)
     : this(facetHandler, vals, FacetValueConverter_Fields.DEFAULT, takeCompliment)
 {
 }
Beispiel #33
0
        public void TestRangeFacetHandler()
        {
            var query = new MatchAllDocsQuery();
            Console.WriteLine(string.Format("query: <{0}>", query.ToString()));

            var testRangeFacetHandlers = new List<IFacetHandler>();
            //testRangeFacetHandlers.Add(new RangeFacetHandler("year", true));//auto range // NightOwl888 - Auto range is no longer a feature.
            testRangeFacetHandlers.Add(new RangeFacetHandler("year", new List<string>(new string[] { "[* TO 2000]", "[2000 TO 2005]", "[2006 TO 2010]", "[2011 TO *]" })));
            //testRangeFacetHandlers.Add(new RangeFacetHandler("price", "price", new NumberFieldFactory(), true)); // NightOwl888 - Auto range is no longer a feature.

            for (var i = 0; i < testRangeFacetHandlers.Count; i++)
            {
                var request = new BrowseRequest()
                {
                    Count = 100,
                    Offset = 0,
                    Query = query,
                    Sort = new Lucene.Net.Search.Sort(new SortField("price", SortField.DOUBLE, false)).GetSort()
                };

                var sectionFilter = new BrowseSelection("category");
                sectionFilter.NotValues = new string[] { "5" };
                sectionFilter.SelectionOperation = BrowseSelection.ValueOperation.ValueOperationAnd;
                request.AddSelection(sectionFilter);

                var faceHandler = testRangeFacetHandlers[i];
                var faceHandlers = new IFacetHandler[] { faceHandler, new SimpleFacetHandler("category") };
                var browser = new BoboBrowser(BoboIndexReader.GetInstance(IndexReader.Open(_indexDir, true), faceHandlers));
                var factSpec = new FacetSpec() { OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc };
                request.SetFacetSpec(faceHandler.Name, factSpec);
                var result = browser.Browse(request);
                Console.WriteLine(string.Format("total hits:{0}", result.NumHits));
                foreach (var facet in result.FacetMap[faceHandler.Name].GetFacets())
                {
                    Console.WriteLine(facet.ToString());
                }
                Console.WriteLine("");
            }
        }
Beispiel #34
0
        public void TestAutoComplete()
        {
            var query = new MatchAllDocsQuery();
            Console.WriteLine(string.Format("query: <{0}>", query.ToString()));
            var request = new BrowseRequest()
            {
                Count = 10,
                Offset = 0,
                Query = query
            };

            //var prefix = "java"; // NightOwl888: Prefix is no longer a feature
            //Console.WriteLine(string.Format("prefix:{0}", prefix));
            //Console.WriteLine("=============================");

            var faceHandlers = new IFacetHandler[] { new SimpleFacetHandler("name") };
            var browser = new BoboBrowser(BoboIndexReader.GetInstance(IndexReader.Open(_indexDir, true), faceHandlers));
            var factSpec = new FacetSpec() { OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc };
            request.SetFacetSpec("name", factSpec);

            var result = browser.Browse(request);

            foreach (var facet in result.FacetMap["name"].GetFacets())
            {
                Console.WriteLine(facet.ToString());
            }
        }
Beispiel #35
0
        protected static BrowseHit[] BuildHits(MyScoreDoc[] scoreDocs, SortField[] sortFields,
                                               IDictionary <string, IFacetHandler> facetHandlerMap, bool fetchStoredFields,
                                               IEnumerable <string> termVectorsToFetch, IFacetHandler groupBy, CombinedFacetAccessible[] groupAccessibles)
        {
            BrowseHit[] hits = new BrowseHit[scoreDocs.Length];
            IEnumerable <IFacetHandler> facetHandlers = facetHandlerMap.Values;

            for (int i = scoreDocs.Length - 1; i >= 0; i--)
            {
                MyScoreDoc      fdoc   = scoreDocs[i];
                BoboIndexReader reader = fdoc.reader;
                BrowseHit       hit    = new BrowseHit();
                if (fetchStoredFields)
                {
                    hit.StoredFields = reader.Document(fdoc.Doc);
                }
                if (termVectorsToFetch != null && termVectorsToFetch.Count() > 0)
                {
                    var tvMap = new Dictionary <string, BrowseHit.TermFrequencyVector>();
                    hit.TermFreqMap = tvMap;
                    foreach (string field in termVectorsToFetch)
                    {
                        ITermFreqVector tv = reader.GetTermFreqVector(fdoc.Doc, field);
                        if (tv != null)
                        {
                            int[]    freqs = tv.GetTermFrequencies();
                            string[] terms = tv.GetTerms();
                            tvMap[field] = new BrowseHit.TermFrequencyVector(terms, freqs);
                        }
                    }
                }
                var map    = new Dictionary <string, string[]>();
                var rawMap = new Dictionary <string, object[]>();
                foreach (var facetHandler in facetHandlers)
                {
                    map[facetHandler.Name]    = facetHandler.GetFieldValues(reader, fdoc.Doc);
                    rawMap[facetHandler.Name] = facetHandler.GetRawFieldValues(reader, fdoc.Doc);
                }
                hit.FieldValues    = map;
                hit.RawFieldValues = rawMap;
                hit.DocId          = fdoc.Doc + fdoc.queue.@base;
                hit.Score          = fdoc.Score;
                hit.Comparable     = fdoc.Value;
                if (groupBy != null)
                {
                    hit.GroupField    = groupBy.Name;
                    hit.GroupValue    = hit.GetField(groupBy.Name);
                    hit.RawGroupValue = hit.GetRawField(groupBy.Name);
                    if (groupAccessibles != null &&
                        hit.GroupValue != null &&
                        groupAccessibles != null &&
                        groupAccessibles.Length > 0)
                    {
                        BrowseFacet facet = groupAccessibles[0].GetFacet(hit.GroupValue);
                        hit.GroupHitsCount = facet.FacetValueHitCount;
                    }
                }
                hits[i] = hit;
            }
            return(hits);
        }
Beispiel #36
0
 public bool PostProcess(IBase baseObject, IGeneratorConfiguration generatorConfiguration, IFacetHandler currentHandler)
 {
     return(true);
 }
            internal FacetOrRandomAccessDocIdSet(IFacetHandler facetHandler, BoboIndexReader reader, 
                string[] vals, IFacetValueConverter valConverter, bool takeCompliment)
            {
		        _dataCache = facetHandler.GetFacetData<FacetDataCache>(reader);
		        _orderArray = _dataCache.OrderArray;
	            _index = valConverter.Convert(_dataCache, vals);
	    
	            _bitset = new OpenBitSet(_dataCache.ValArray.Count);
	            foreach (int i in _index)
	            {
	              _bitset.FastSet(i);
	            }
      
                if (takeCompliment)
                {
                    // flip the bits
                    for (int i = 0; i < _dataCache.ValArray.Count; ++i)
                    {
                        _bitset.FastFlip(i);
                    }
                }
	        }
 public MultiValueORFacetFilter(IFacetHandler facetHandler, string[] vals, bool takeCompliment)
     : this(facetHandler, vals, FacetValueConverter_Fields.DEFAULT, takeCompliment)
 {}
 public FacetOrFilter(IFacetHandler facetHandler, string[] vals, bool takeCompliment)
     : this(facetHandler, vals, takeCompliment, FacetValueConverter_Fields.DEFAULT)
 {
 }
Beispiel #40
0
        public void TestSimpleBrowser()
        {
            var query = new TermQuery(new Term("name", "asp.net"));
            Console.WriteLine(string.Format("query: <{0}>", query.ToString()));
            var request = new BrowseRequest()
            {
                Count = 10,
                Offset = 0,
                Query = query,
                Sort = new Lucene.Net.Search.Sort(new SortField("price", SortField.DOUBLE, false)).GetSort()
            };

            var facetHandlers = new IFacetHandler[] { new SimpleFacetHandler("category") };
            var browser = new BoboBrowser(BoboIndexReader.GetInstance(IndexReader.Open(_indexDir, true), facetHandlers));
            var facetSpec = new FacetSpec() { OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc, MinHitCount = 1 };
            request.SetFacetSpec("category", facetSpec);

            var result = browser.Browse(request);
            Console.WriteLine(string.Format("total hits:{0}", result.NumHits));
            Console.WriteLine("===========================");
            foreach (var facet in result.FacetMap["category"].GetFacets())
            {
                var category = _categories.First(k => k.Value == int.Parse(facet.Value.ToString()));
                Console.WriteLine("{0}:({1})", category.Key, facet.FacetValueHitCount);
            }
            Console.WriteLine("===========================");
            for (var i = 0; i < result.Hits.Length; i++)
            {
                var doc = browser.Doc(result.Hits[i].DocId);
                var category = _categories.First(k => k.Value == int.Parse(doc.GetField("category").StringValue)).Key;
                Console.WriteLine(string.Format("{2} - {0} ${1} by {3}", doc.GetField("name").StringValue, doc.GetField("price").StringValue, category, doc.GetField("author").StringValue));
            }
        }
Beispiel #41
0
 public FacetFilter(IFacetHandler facetHandler, string value)
 {
     _facetHandler = facetHandler;
     _value = value;
 }