private void DoTest(Random random, TextWriter @out, bool useCompoundFiles, int MAX_DOCS) { Store.Directory directory = NewDirectory(); Analyzer analyzer = new MockAnalyzer(random); IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer); MergePolicy mp = conf.MergePolicy; mp.NoCFSRatio = useCompoundFiles ? 1.0 : 0.0; IndexWriter writer = new IndexWriter(directory, conf); if (Verbose) { Console.WriteLine("TEST: now build index MAX_DOCS=" + MAX_DOCS); } for (int j = 0; j < MAX_DOCS; j++) { Documents.Document d = new Documents.Document(); d.Add(NewTextField(PRIORITY_FIELD, HIGH_PRIORITY, Field.Store.YES)); d.Add(NewTextField(ID_FIELD, Convert.ToString(j), Field.Store.YES)); writer.AddDocument(d); } writer.Dispose(); // try a search without OR IndexReader reader = DirectoryReader.Open(directory); IndexSearcher searcher = NewSearcher(reader); Query query = new TermQuery(new Term(PRIORITY_FIELD, HIGH_PRIORITY)); @out.WriteLine("Query: " + query.ToString(PRIORITY_FIELD)); if (Verbose) { Console.WriteLine("TEST: search query=" + query); } Sort sort = new Sort(SortField.FIELD_SCORE, new SortField(ID_FIELD, SortFieldType.INT32)); ScoreDoc[] hits = searcher.Search(query, null, MAX_DOCS, sort).ScoreDocs; PrintHits(@out, hits, searcher); CheckHits(hits, MAX_DOCS, searcher); // try a new search with OR searcher = NewSearcher(reader); hits = null; BooleanQuery booleanQuery = new BooleanQuery(); booleanQuery.Add(new TermQuery(new Term(PRIORITY_FIELD, HIGH_PRIORITY)), Occur.SHOULD); booleanQuery.Add(new TermQuery(new Term(PRIORITY_FIELD, MED_PRIORITY)), Occur.SHOULD); @out.WriteLine("Query: " + booleanQuery.ToString(PRIORITY_FIELD)); hits = searcher.Search(booleanQuery, null, MAX_DOCS, sort).ScoreDocs; PrintHits(@out, hits, searcher); CheckHits(hits, MAX_DOCS, searcher); reader.Dispose(); directory.Dispose(); }
public void Term_query_must_transform_correclty_to_ES() { var query = new TermQuery("type", "text"); Assert.IsTrue(query.Field == "type"); Assert.IsTrue(query.Value.ToString() == "text"); string json = query.ToString(); var jo = JsonObject.Parse(json); var q = jo.ToQuery(); Assert.IsTrue(q.Type == QueryType.TermQuery); query = q as TermQuery; Assert.IsTrue(query.Field == "type"); Assert.IsTrue(query.Value.ToString() == "text"); }
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)); } }