Example #1
0
        public void TestIndex()
        {
            string utf8Test = @"
                いろはにほへど ちりぬるを
                わがよたれぞ つねならむ
                うゐのおくやま けふこえて
                あさきゆめみじ ゑひもせず (4)
                ";

            var guid = Guid.NewGuid();

            using (var tixS = new MemoryStream())
            using (var tdtS = new MemoryStream())
            using (var dixS = new MemoryStream())
            using (var ddtS = new MemoryStream())
            {
                using (var writer = new IndexWriter(tixS, tdtS, dixS, ddtS))
                {
                    var document = new bsharptree.example.simpleindex.Document(guid, new MemoryStream(Encoding.UTF8.GetBytes(utf8Test)));
                    writer.AddDocument(document, new DefaultAnalyzer());
                    writer.TermStorage.Index.Commit();
                }

                //tixS.Flush();
                //tdtS.Flush();
                //dixS.Flush();
                //ddtS.Flush();

                // reset
                tixS.Seek(0, SeekOrigin.Begin);
                tdtS.Seek(0, SeekOrigin.Begin);
                dixS.Seek(0, SeekOrigin.Begin);
                ddtS.Seek(0, SeekOrigin.Begin);

                using (var termStorage = new TermStorage(tixS, tdtS))
                {
                    var analyzer = new DefaultAnalyzer();
                    var stream = new MemoryStream(Encoding.UTF8.GetBytes(utf8Test));

                    foreach (var tp in analyzer.GetTermPositions(stream))
                    {
                        var positions = termStorage.Get(tp.Term);
                        var found = false;
                        foreach (var pos in positions.Value)
                        {
                            Assert.IsTrue(pos.Document.Equals(guid));
                            if (pos.Span.Start == tp.Span.Start && pos.Span.End == tp.Span.End)
                                found = true;
                        }
                        Assert.IsTrue(found);
                    }
                }

                //var foo = new IndexQueryProvider();
                //var docStorage = new DocumentStorage(dixS, ddtS);
                //var results = from term in foo.Terms
                //              from location in term.Value
                //              where term.Key == "foo" || term.Key == "bar"
                //              select location;

                //foreach (var result in results.Distinct())
                //{
                //    Console.Out.WriteLine(result.Document);

                //    var document = docStorage.Get(result.Document);
                //    var context = docStorage.GetContext(result);
                //    Console.Out.WriteLine(context);
                //    Console.Out.WriteLine();
                //}

            }
        }