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 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 virtual BrowseResult Browse(BrowseRequest req) { BoboBrowser browser = null; try { browser = new BoboBrowser(_boboReader); return browser.Browse(req); } catch (Exception e) { logger.Error(e.Message, e); return new BrowseResult(); } finally { if (browser != null) { try { browser.Dispose(); } catch (Exception e) { logger.Error(e.Message); } } } }
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); }
public BrowseResult Browse(BrowseRequest browseRequest) { string indexDir = HostingEnvironment.MapPath(ConfigurationManager.AppSettings["LuceneIndexDirectory"]); // This is the equivalent code to what is specified in the "/LuceneIndex/bobo.spring" file. You could just as well // specify this configuration here and pass it to another overload of BoboIndexReader.GetInstance that accepts // an IEnumerable<IFacetHandler> as an argument. //var facetHandlers = new List<IFacetHandler>(); //facetHandlers.Add(new SimpleFacetHandler("color") { TermCountSize = BoboBrowse.Net.Facets.TermCountSize.Small }); //facetHandlers.Add(new SimpleFacetHandler("category") { TermCountSize = BoboBrowse.Net.Facets.TermCountSize.Medium }); //facetHandlers.Add(new PathFacetHandler("city") { Separator = "/" }); //facetHandlers.Add(new PathFacetHandler("makemodel") { Separator = "/" }); //facetHandlers.Add(new RangeFacetHandler("year", new PredefinedTermListFactory<int>("00000000000000000000"), new string[] { "[1993 TO 1994]", "[1995 TO 1996]", "[1997 TO 1998]", "[1999 TO 2000]", "[2001 TO 2002]" })); //facetHandlers.Add(new RangeFacetHandler("price", new PredefinedTermListFactory<float>("00000000000000000000"), new string[] { "[2001 TO 6700]", "[6800 TO 9900]", "[10000 TO 13100]", "[13200 TO 17300]", "[17400 TO 19500]" })); //facetHandlers.Add(new RangeFacetHandler("mileage", new PredefinedTermListFactory<int>("00000000000000000000"), new string[] { "[* TO 12500]", "[12501 TO 15000]", "[15001 TO 17500]", "[17501 TO *]" })); //facetHandlers.Add(new MultiValueFacetHandler("tags")); System.IO.DirectoryInfo idxDir = new System.IO.DirectoryInfo(indexDir); using (IndexReader reader = IndexReader.Open(FSDirectory.Open(idxDir), true)) { using (BoboIndexReader boboReader = BoboIndexReader.GetInstance(reader)) { using (BoboBrowser browser = new BoboBrowser(boboReader)) { return browser.Browse(browseRequest); } } } }
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 TestWithSingleCommit() { string text = "text"; Document doc1 = new Document(); doc1.Add(new TextField(text, "Foo1", Field.Store.YES)); m_indexWriter.AddDocument(doc1); Document doc2 = new Document(); doc2.Add(new TextField(text, "Foo2", Field.Store.YES)); m_indexWriter.AddDocument(doc2); Document doc3 = new Document(); doc3.Add(new TextField(text, "Foo3", Field.Store.YES)); m_indexWriter.AddDocument(doc3); m_indexWriter.Commit(); List <IFacetHandler> handlerList = new List <IFacetHandler>(); DirectoryReader reader = BoboMultiReader.Open(m_indexWriter, true); BoboMultiReader boboMultiReader = BoboMultiReader.GetInstance(reader, handlerList); BrowseRequest br = new BrowseRequest(); br.Count = (10); br.Offset = (0); QueryParser parser = new QueryParser(LuceneVersion.LUCENE_48, "text", new StandardAnalyzer(LuceneVersion.LUCENE_48)); Lucene.Net.Search.Query q = parser.Parse("Foo*"); br.Query = (q); BoboBrowser browser = new BoboBrowser(boboMultiReader); BrowseResult result = browser.Browse(br); int totalHits = result.NumHits; BrowseHit[] hits = result.Hits; Assert.AreEqual(3, totalHits, "should be 3 hits"); Assert.AreEqual(0, hits[0].DocId, "should be doc 0"); Assert.AreEqual(1, hits[1].DocId, "should be doc 1"); Assert.AreEqual(2, hits[2].DocId, "should be doc 2"); result.Dispose(); }
public void TestPriceRangeWithFloatAndSelection() { // Field. string field = "pricefloat"; // Lucene index. using (DirectoryReader reader = DirectoryReader.Open(this._indexDir)) { // Bobo reader. using (BoboMultiReader boboReader = BoboMultiReader.GetInstance(reader, this._facetHandlers)) { // Request. BrowseRequest browseRequest = new BrowseRequest(); browseRequest.Count = 10; browseRequest.Offset = 0; browseRequest.FetchStoredFields = true; // Selection. BrowseSelection sel = new BrowseSelection(field); sel.AddValue("[000000.000 TO 000999.220]"); 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(7, totalHits); Assert.AreEqual(1, facetVals.Count); Assert.AreEqual("[000000.000 TO 000999.220](7)", facetVals[0].ToString()); } } } }
public virtual BrowseResult Browse(BrowseRequest req) // throws BrowseException { BrowseResult result = BrowseService_Fields.EMPTY_RESULT; if (req.Offset < 0) { throw new BrowseException("Invalid offset: " + req.Offset); } if (_reader != null) { BoboBrowser browser = new BoboBrowser(_reader); result = browser.Browse(req); } return result; }
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(""); } }
private static void DoBrowse(BoboBrowser browser) { String q = "java"; QueryParser parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_CURRENT, "b", new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_CURRENT)); Query query = parser.Parse(q); BrowseRequest br = new BrowseRequest(); //br.setQuery(query); br.Offset = 0; br.Count = 0; BrowseSelection geoSel = new BrowseSelection("geo_region"); geoSel.AddValue("5227"); BrowseSelection industrySel = new BrowseSelection("industry_norm"); industrySel.AddValue("1"); //br.AddSelection(geoSel); br.AddSelection(industrySel); FacetSpec regionSpec = new FacetSpec(); regionSpec.ExpandSelection = true; regionSpec.OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc; regionSpec.MaxCount = 5; FacetSpec industrySpec=new FacetSpec(); industrySpec.ExpandSelection = true; industrySpec.OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc; industrySpec.MaxCount = 5; FacetSpec numEndorserSpec=new FacetSpec(); numEndorserSpec.ExpandSelection = true; br.SetFacetSpec("industry_norm", industrySpec); br.SetFacetSpec("geo_region", regionSpec); br.SetFacetSpec("num_endorsers_norm", numEndorserSpec); long start = System.Environment.TickCount; BrowseResult res = browser.Browse(br); long end = System.Environment.TickCount; Console.WriteLine("result: " + res); Console.WriteLine("took: " + (end-start)); }
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() { DirectoryReader reader = DirectoryReader.Open(directory); BoboMultiReader boboReader = BoboMultiReader.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); ICollection <BrowseFacet> facets = fa.GetFacets(); Console.WriteLine(facets); Assert.AreEqual(1, facets.Count); BrowseFacet facet = facets.Get(0); Assert.AreEqual(2, facet.FacetValueHitCount); }
public void TestNotValuesForSimpleFacetHandler() { BrowseRequest br = new BrowseRequest(); br.Count = 20; br.Offset = 0; BrowseSelection colorSel = new BrowseSelection("color"); colorSel.AddValue("red"); br.AddSelection(colorSel); BrowseSelection idSel = new BrowseSelection("id"); idSel.AddNotValue("0"); br.AddSelection(idSel); BrowseResult result = null; BoboBrowser boboBrowser = null; int expectedHitNum = (_documentSize / 2) - 1; using (Directory ramIndexDir = CreateIndex()) { using (IndexReader srcReader = IndexReader.Open(ramIndexDir, true)) { using (boboBrowser = new BoboBrowser(BoboIndexReader.GetInstance(srcReader, _facetHandlers, null))) { result = boboBrowser.Browse(br); Assert.AreEqual(expectedHitNum, result.NumHits); StringBuilder buffer = new StringBuilder(); BrowseHit[] hits = result.Hits; for (int i = 0; i < hits.Length; ++i) { int expectedID = (i + 1) * 2; Assert.AreEqual(expectedID, int.Parse(hits[i].GetField("id"))); if (i != 0) { buffer.Append('\n'); } buffer.Append("id=" + hits[i].GetField("id") + "," + "color=" + hits[i].GetField("color")); } log.Info(buffer.ToString()); } } } }
public void TestFacetNameForSimpleFacetHandler() { BrowseRequest br = new BrowseRequest(); br.Count = 20; br.Offset = 0; BrowseSelection colorSel = new BrowseSelection("mycolor"); colorSel.AddValue("yellow"); br.AddSelection(colorSel); BrowseSelection makeSel = new BrowseSelection("make"); makeSel.AddValue("rav4"); br.AddSelection(makeSel); FacetSpec spec = new FacetSpec(); spec.ExpandSelection = true; spec.OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc; spec.MaxCount = 15; br.SetFacetSpec("mycolor", spec); br.SetFacetSpec("id", spec); br.SetFacetSpec("make", spec); BrowseResult result = null; BoboBrowser boboBrowser = null; int expectedHitNum = 3; try { Directory ramIndexDir = CreateIndex(); IndexReader srcReader = IndexReader.Open(ramIndexDir, true); boboBrowser = new BoboBrowser(BoboIndexReader.GetInstance(srcReader, _facetHandlers, null)); result = boboBrowser.Browse(br); Assert.AreEqual(expectedHitNum, result.NumHits); } catch (BrowseException e) { Assert.Fail(e.Message); } catch (System.IO.IOException ioe) { Assert.Fail(ioe.Message); } finally { if (boboBrowser != null) { try { boboBrowser.Close(); } catch (System.IO.IOException e) { Assert.Fail(e.Message); } } } }
public void TestMultiValueFacetHandler() { var query = new MatchAllDocsQuery(); Console.WriteLine(string.Format("query: <{0}>", query.ToString())); var request = new BrowseRequest() { Count = 100, Offset = 0, Query = query, Sort = new Sort(new SortField("path", SortField.STRING, false)).GetSort() }; var faceHandlers = new FacetHandler[] { new MultiValueFacetHandler("path") }; var browser = new BoboBrowser(BoboIndexReader.GetInstance(IndexReader.Open(_indexDir, true), faceHandlers)); var factSpec = new FacetSpec() { OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc }; request.SetFacetSpec("path", factSpec); var result = browser.Browse(request); Console.WriteLine(string.Format("total hits:{0}", result.NumHits)); Console.WriteLine("==========================="); foreach (var facet in result.FacetMap["path"].GetFacets()) { Console.WriteLine(facet.ToString()); } 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 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 TestNotValuesForRangeFacetHandler() { Console.WriteLine("TestNotValuesForRangeFacetHandler"); BrowseResult result = null; BoboBrowser boboBrowser=null; using (Directory ramIndexDir = CreateIndexTwo()) { using (IndexReader srcReader = IndexReader.Open(ramIndexDir, true)) { using (boboBrowser = new BoboBrowser(BoboIndexReader.GetInstance(srcReader, _facetHandlers, null))) { BrowseRequest br = new BrowseRequest(); br.Count = (20); br.Offset = (0); if (_idRanges == null) { log.Error("_idRanges cannot be null in order to test NOT on RangeFacetHandler"); } BrowseSelection idSel = new BrowseSelection("idRange"); //int rangeIndex = 2; // Not used idSel.AddNotValue(_idRanges[0]); int expectedHitNum = 1; br.AddSelection(idSel); BooleanQuery q = new BooleanQuery(); q.Add(NumericRangeQuery.NewIntRange("NUM", 10, 10, true, true), Occur.MUST_NOT); q.Add(new MatchAllDocsQuery(), Occur.MUST); br.Query = q; result = boboBrowser.Browse(br); Assert.AreEqual(expectedHitNum, result.NumHits); for (int i = 0; i < result.NumHits; i++) { Console.WriteLine(result.Hits[i]); } } } } }
public void TestIndexReload() { try { RAMDirectory idxDir = new RAMDirectory(); Document[] docs = BoboTestCase.BuildData(); BoboIndexReader.WorkArea workArea = new BoboIndexReader.WorkArea(); BrowseRequest req; BrowseSelection sel; BoboBrowser browser; BrowseResult result; IndexWriter writer = new IndexWriter(idxDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.UNLIMITED); writer.Close(); int dup = 0; for (int j = 0; j < 50; j++) { IndexReader idxReader = IndexReader.Open(idxDir, true); BoboIndexReader reader = BoboIndexReader.GetInstance(idxReader, _fconf, workArea); req = new BrowseRequest(); req.Offset = 0; req.Count = 10; sel = new BrowseSelection("color"); sel.AddValue("red"); req.AddSelection(sel); browser = new BoboBrowser(reader); result = browser.Browse(req); Assert.AreEqual(3 * dup, result.NumHits); req = new BrowseRequest(); req.Offset = 0; req.Count = 10; sel = new BrowseSelection("tag"); sel.AddValue("dog"); req.AddSelection(sel); browser = new BoboBrowser(reader); result = browser.Browse(req); Assert.AreEqual(2 * dup, result.NumHits); req = new BrowseRequest(); req.Offset = 0; req.Count = 10; sel = new BrowseSelection("tag"); sel.AddValue("funny"); req.AddSelection(sel); browser = new BoboBrowser(reader); result = browser.Browse(req); Assert.AreEqual(3 * dup, result.NumHits); writer = new IndexWriter(idxDir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_CURRENT), false, IndexWriter.MaxFieldLength.UNLIMITED); for (int k = 0; k <= j; k++) { for (int i = 0; i < docs.Length; i++) { writer.AddDocument(docs[i]); } dup++; } writer.Close(); } idxDir.Close(); } catch (Exception e) { Assert.Fail(e.Message); } }
public void TestFacetNameForSimpleFacetHandler() { BrowseRequest br = new BrowseRequest(); br.Count = 20; br.Offset = 0; BrowseSelection colorSel = new BrowseSelection("mycolor"); colorSel.AddValue("yellow"); br.AddSelection(colorSel); BrowseSelection makeSel = new BrowseSelection("make"); makeSel.AddValue("rav4"); br.AddSelection(makeSel); FacetSpec spec = new FacetSpec(); spec.ExpandSelection = true; spec.OrderBy = FacetSpec.FacetSortSpec.OrderHitsDesc; spec.MaxCount = 15; br.SetFacetSpec("mycolor", spec); br.SetFacetSpec("id", spec); br.SetFacetSpec("make", spec); int expectedHitNum = 3; Directory ramIndexDir = CreateIndex(); using (IndexReader srcReader = IndexReader.Open(ramIndexDir, true)) { using (BoboIndexReader boboReader = BoboIndexReader.GetInstance(srcReader, _facetHandlers, null)) { using (BoboBrowser boboBrowser = new BoboBrowser(boboReader)) { using (BrowseResult result = boboBrowser.Browse(br)) { Assert.AreEqual(expectedHitNum, result.NumHits); } } } } }