예제 #1
0
파일: SpimiCli.cs 프로젝트: taoneill/SPIMI
        public static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("usage: Spimi <folderpath> <DestinationIndexFilePath>");
                return;
            }
            string directory = args[0];
            string indexFilePath = args[1];
            SpimiIndexer indexer = new SpimiIndexer(new BasicLexer());

            DirectoryInfo dir = new DirectoryInfo(directory);
            foreach(FileInfo file in dir.GetFiles().Where(f => f.Extension.Equals(".sgm")))
                indexer.Index(file.FullName, file.Open(FileMode.Open));

            using (FileStream indexFileStream = File.Open(indexFilePath, FileMode.CreateNew))
            {
                indexer.CreateIndex(indexFileStream);
                FileIndex index = FileIndex.Open(indexFileStream);
                QueryEngine queryEngine = new QueryEngine(index);
                while (true)
                {
                    Console.Write("> ");
                    string query = Console.ReadLine();
                    foreach (string docId in queryEngine.Query(query.ToLower()))
                    {
                        Console.WriteLine(docId);
                    }
                }
            }
        }
예제 #2
0
파일: SpimiTest.cs 프로젝트: taoneill/SPIMI
        public void TestLargeIndex()
        {
            SpimiIndexer spimi = new SpimiIndexer(new BasicLexer());

            MemoryStream indexStream = new MemoryStream();
            spimi.Index("TestData1", GetStream(TestData1));
            spimi.Index("TestData2", GetStream(TestData2));
            spimi.CreateIndex(indexStream);
            FileIndex index = FileIndex.Open(indexStream);
            PostingList list = index.GetPostingList("sit");
            Assert.AreEqual("sit", list.Term);
            Assert.AreEqual("TestData1", list.Postings[0]);
            Assert.AreEqual("TestData2", list.Postings[1]);
        }