public void TestFacetSelectionFilter() { var query = new MatchAllDocsQuery(); Console.WriteLine(string.Format("query: <{0}>", query.ToString())); var request = new BrowseRequest() { Count = 10, Offset = 0, Query = query }; var authors = new string[] { "kathy", "sierra" };//kathy&sierra var sectionFilter = new BrowseSelection("author"); sectionFilter.Values = authors; sectionFilter.SelectionOperation = BrowseSelection.ValueOperation.ValueOperationAnd; request.AddSelection(sectionFilter); var browser = new BoboBrowser(BoboIndexReader.GetInstance(IndexReader.Open(_indexDir, true), new IFacetHandler[] { new MultiValueFacetHandler("author") })); var result = browser.Browse(request); 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)); } }
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()); } }
public void TestNumberRangeWithInt() { // Field. string field = "number"; // Lucene index. using (IndexReader reader = IndexReader.Open(this._indexDir, true)) { // Bobo reader. using (BoboIndexReader boboReader = BoboIndexReader.GetInstance(reader, this._facetHandlers)) { // Request. BrowseRequest browseRequest = new BrowseRequest(); browseRequest.Count = 10; browseRequest.Offset = 0; browseRequest.FetchStoredFields = true; // Selection. BrowseSelection sel = new BrowseSelection(field); browseRequest.AddSelection(sel); // Query. MatchAllDocsQuery query = new MatchAllDocsQuery(); // Output. FacetSpec spec = new FacetSpec(); spec.OrderBy = FacetSpec.FacetSortSpec.OrderValueAsc; spec.MaxCount = 10; browseRequest.SetFacetSpec(field, spec); // Browse. IBrowsable browser = new BoboBrowser(boboReader); using (BrowseResult result = browser.Browse(browseRequest)) { // Results. int totalHits = result.NumHits; BrowseHit[] hits = result.Hits; IDictionary <String, IFacetAccessible> facetMap = result.FacetMap; IFacetAccessible facets = facetMap[field]; List <BrowseFacet> facetVals = facets.GetFacets().ToList(); // Check. Assert.AreEqual(10, totalHits); Assert.AreEqual(5, facetVals.Count()); Assert.AreEqual("[0000000000 TO 0000001000](3)", facetVals[0].ToString()); Assert.AreEqual("[0000001000 TO 0000010000](3)", facetVals[1].ToString()); Assert.AreEqual("[0000010000 TO 0000100000](2)", facetVals[2].ToString()); Assert.AreEqual("[0000100000 TO 0001000000](3)", facetVals[3].ToString()); Assert.AreEqual("[0001000000 TO *](3)", facetVals[4].ToString()); } } } }
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(""); } }
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)); } }
public void TestMultiValPath() { IndexReader reader = IndexReader.Open(directory, true); BoboIndexReader boboReader = BoboIndexReader.GetInstance(reader, facetHandlers); BoboBrowser browser = new BoboBrowser(boboReader); BrowseRequest req = new BrowseRequest(); BrowseSelection sel = new BrowseSelection(PathHandlerName); sel.AddValue("/a"); var propMap = new Dictionary <String, String>(); propMap.Put(PathFacetHandler.SEL_PROP_NAME_DEPTH, "0"); propMap.Put(PathFacetHandler.SEL_PROP_NAME_STRICT, "false"); sel.SetSelectionProperties(propMap); req.AddSelection(sel); FacetSpec fs = new FacetSpec(); fs.MinHitCount = (1); req.SetFacetSpec(PathHandlerName, fs); BrowseResult res = browser.Browse(req); Assert.AreEqual(res.NumHits, 1); IFacetAccessible fa = res.GetFacetAccessor(PathHandlerName); IEnumerable <BrowseFacet> facets = fa.GetFacets(); Console.WriteLine(facets); Assert.AreEqual(1, facets.Count()); BrowseFacet facet = facets.Get(0); Assert.AreEqual(2, facet.FacetValueHitCount); }
/// <summary> /// Constructor /// </summary> /// <param name="reader">Index reader</param> /// <param name="workArea">A service locator that can be used to inject custom objects.</param> /// <returns>A new BoboIndexReader instance.</returns> public static BoboIndexReader GetInstance(IndexReader reader, WorkArea workArea) { return(BoboIndexReader.GetInstance(reader, null, null, workArea, false)); }
/// <summary> /// Constructor /// </summary> /// <param name="reader">Index reader</param> /// <param name="autoClose">True to close the underlying IndexReader when this instance is closed.</param> /// <returns>A new BoboIndexReader instance.</returns> public static BoboIndexReader GetInstance(IndexReader reader, bool autoClose) { return(BoboIndexReader.GetInstance(reader, null, null, new WorkArea(), autoClose)); }
/// <summary> /// Constructor /// </summary> /// <param name="reader">Index reader</param> /// <returns>A new BoboIndexReader instance.</returns> public static BoboIndexReader GetInstance(IndexReader reader) { return(BoboIndexReader.GetInstance(reader, null, null, new WorkArea(), false)); }
/// <summary> /// Constructor /// </summary> /// <param name="reader">Index reader</param> /// <param name="facetHandlers">List of facet handlers</param> /// <param name="facetHandlerFactories">List of factories to create facet handler instances at runtime.</param> /// <param name="workArea">A service locator that can be used to inject custom objects.</param> /// <returns>A new BoboIndexReader instance.</returns> public static BoboIndexReader GetInstance(IndexReader reader, IEnumerable <IFacetHandler> facetHandlers, IEnumerable <IRuntimeFacetHandlerFactory> facetHandlerFactories, WorkArea workArea) { return(BoboIndexReader.GetInstance(reader, facetHandlers, facetHandlerFactories, workArea, false)); }
/// <summary> /// Constructor /// </summary> /// <param name="reader">Index reader</param> /// <param name="facetHandlers">List of facet handlers</param> /// <param name="autoClose">True to close the underlying IndexReader when this instance is closed.</param> /// <returns>A new BoboIndexReader instance.</returns> public static BoboIndexReader GetInstance(IndexReader reader, IEnumerable <IFacetHandler> facetHandlers, bool autoClose) { return(BoboIndexReader.GetInstance(reader, facetHandlers, new IRuntimeFacetHandlerFactory[0], new WorkArea(), autoClose)); }