public void FullTextIncrementalIndexingLucene1() { //Lucene Index Directory dir = new RAMDirectory(); LuceneSubjectsIndexer indexer = new LuceneSubjectsIndexer(dir, new StandardAnalyzer(LuceneTestHarness.LuceneVersion), new DefaultIndexSchema()); //Test Graph Graph g = new Graph(); g.LoadFromEmbeddedResource("VDS.RDF.Configuration.configuration.ttl"); //Try indexing in 100 Triple chunks Random rnd = new Random(); String searchTerm = "http"; for (int i = 0; i < g.Triples.Count; i += 100) { //Index the Triples List <Triple> ts = g.Triples.Skip(i).Take(100).ToList(); foreach (Triple t in ts) { indexer.Index(t); } indexer.Flush(); //Now do a search to check some of those triples got indexed //Pick the first multi-word string literal we can find from the batch and grab one word from it INode targetNode = ts.Where(t => t.Object.NodeType == NodeType.Literal && t.Object.ToString().Contains("http")).Select(t => t.Subject).FirstOrDefault(); if (targetNode == null) { continue; } Console.WriteLine("Picked " + targetNode.ToString(this._formatter) + " as search target with search term '" + searchTerm + "'"); LuceneSearchProvider searcher = new LuceneSearchProvider(LuceneTestHarness.LuceneVersion, dir); IEnumerable <IFullTextSearchResult> results = searcher.Match(searchTerm); foreach (IFullTextSearchResult r in results) { Console.WriteLine("Got result " + r.Node.ToString(this._formatter) + " with score " + r.Score); } Assert.IsTrue(results.Any(r => r.Node.Equals(targetNode)), "Did not find expected node in search results"); searcher.Dispose(); Console.WriteLine(); } indexer.Dispose(); }
public void FullTextIndexCreationLuceneSubjects() { IFullTextIndexer indexer = null; try { indexer = new LuceneSubjectsIndexer(LuceneTestHarness.Index, LuceneTestHarness.Analyzer, LuceneTestHarness.Schema); indexer.Index(this.GetTestData()); } finally { if (indexer != null) { indexer.Dispose(); } } }
public FullTextGraphScopingTests() { String data = @"<http://x> <http://p> ""This is sample text"" <http://g1> . <http://y> <http://p> ""This is sample text"" <http://g2> . <http://y> <http://p> ""Additional sample"" <http://g2> ."; this._store = new TripleStore(); StringParser.ParseDataset(this._store, data, new NQuadsParser()); this._index = new RAMDirectory(); using (LuceneSubjectsIndexer indexer = new LuceneSubjectsIndexer(this._index, new StandardAnalyzer(LucUtil.Version.LUCENE_30), new DefaultIndexSchema())) { foreach (IGraph g in this._store.Graphs) { indexer.Index(g); } } }
public void FullTextIndexSearchLuceneSubjectsWithLimitAndThreshold() { IFullTextIndexer indexer = null; IFullTextSearchProvider provider = null; try { indexer = new LuceneSubjectsIndexer(LuceneTestHarness.Index, LuceneTestHarness.Analyzer, LuceneTestHarness.Schema); indexer.Index(this.GetTestData()); } finally { if (indexer != null) { indexer.Dispose(); } } try { provider = new LuceneSearchProvider(LuceneTestHarness.LuceneVersion, LuceneTestHarness.Index); NTriplesFormatter formatter = new NTriplesFormatter(); int i = 0; foreach (IFullTextSearchResult result in provider.Match("http", 1.0d, 5)) { i++; Console.WriteLine(result.Node.ToString(formatter) + " - Scores " + result.Score); Assert.IsTrue(result.Score >= 1.0d, "Score should be higher than desired threshold"); } Assert.IsTrue(i <= 5, "Should be a max of 5 results"); } finally { if (provider != null) { provider.Dispose(); } } }
public void FullTextIndexSearchLuceneSubjects() { IFullTextIndexer indexer = null; IFullTextSearchProvider provider = null; try { indexer = new LuceneSubjectsIndexer(LuceneTestHarness.Index, LuceneTestHarness.Analyzer, LuceneTestHarness.Schema); indexer.Index(this.GetTestData()); } finally { if (indexer != null) { indexer.Dispose(); } } try { provider = new LuceneSearchProvider(LuceneTestHarness.LuceneVersion, LuceneTestHarness.Index); NTriplesFormatter formatter = new NTriplesFormatter(); foreach (IFullTextSearchResult result in provider.Match("http")) { Console.WriteLine(result.Node.ToString(formatter) + " - Scores " + result.Score); } } finally { if (provider != null) { provider.Dispose(); } } }
public void FullTextIndexDestructionLuceneSubjects() { IFullTextIndexer indexer = null; try { LuceneSearchProvider provider = null; int origCount; try { provider = new LuceneSearchProvider(LuceneTestHarness.LuceneVersion, LuceneTestHarness.Index); origCount = provider.Match("http").Count(); provider.Dispose(); } catch { origCount = 0; } finally { if (provider != null) { provider.Dispose(); } } Console.WriteLine("Prior to indexing search returns " + origCount + " result(s)"); indexer = new LuceneSubjectsIndexer(LuceneTestHarness.Index, LuceneTestHarness.Analyzer, LuceneTestHarness.Schema); IGraph g = this.GetTestData(); indexer.Index(g); indexer.Dispose(); indexer = null; int currCount; try { provider = new LuceneSearchProvider(LuceneTestHarness.LuceneVersion, LuceneTestHarness.Index); currCount = provider.Match("http").Count(); provider.Dispose(); } catch { currCount = 0; } finally { if (provider != null) { provider.Dispose(); } } Console.WriteLine("After indexing search returns " + currCount + " result(s)"); indexer = new LuceneSubjectsIndexer(LuceneTestHarness.Index, LuceneTestHarness.Analyzer, LuceneTestHarness.Schema); indexer.Unindex(g); indexer.Dispose(); indexer = null; try { provider = new LuceneSearchProvider(LuceneTestHarness.LuceneVersion, LuceneTestHarness.Index); currCount = provider.Match("http").Count(); Console.WriteLine("After unindexing search returns " + currCount + " result(s)"); } finally { if (provider != null) { provider.Dispose(); } } Assert.Equal(origCount, currCount); } finally { if (indexer != null) { indexer.Dispose(); } LuceneTestHarness.Index.Dispose(); } }