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); } } } }
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]); }