List of usage examples for org.apache.lucene.search IndexSearcher IndexSearcher
public IndexSearcher(IndexReaderContext context)
From source file:at.ac.univie.mminf.luceneSKOS.analysis.SKOSLabelFilterTest.java
License:Apache License
@Test public void queryParserSearch() throws IOException, ParseException { Document doc = new Document(); doc.add(new Field("content", "The quick brown fox jumps over the lazy dog", Field.Store.YES, Field.Index.ANALYZED)); writer.addDocument(doc);/*from w w w . java 2 s. c o m*/ searcher = new IndexSearcher(IndexReader.open(writer, false)); Query query = new QueryParser(Version.LUCENE_36, "content", skosAnalyzer).parse("\"fox jumps\""); Assert.assertEquals(1, TestUtil.hitCount(searcher, query)); Assert.assertEquals("content:\"fox (jumps hops leaps)\"", query.toString()); Assert.assertEquals("org.apache.lucene.search.MultiPhraseQuery", query.getClass().getName()); query = new QueryParser(Version.LUCENE_36, "content", new StandardAnalyzer(Version.LUCENE_36)) .parse("\"fox jumps\""); Assert.assertEquals(1, TestUtil.hitCount(searcher, query)); Assert.assertEquals("content:\"fox jumps\"", query.toString()); Assert.assertEquals("org.apache.lucene.search.PhraseQuery", query.getClass().getName()); }
From source file:at.ac.univie.mminf.luceneSKOS.analysis.SKOSLabelFilterTest.java
License:Apache License
@Test public void testTermQuery() throws CorruptIndexException, IOException, ParseException { Document doc = new Document(); doc.add(new Field("content", "I work for the united nations", Field.Store.YES, Field.Index.ANALYZED)); writer.addDocument(doc);/*from w w w . j av a 2s. c o m*/ searcher = new IndexSearcher(IndexReader.open(writer, false)); QueryParser parser = new QueryParser(Version.LUCENE_36, "content", new SimpleAnalyzer(Version.LUCENE_36)); Query query = parser.parse("united nations"); Assert.assertEquals(1, TestUtil.hitCount(searcher, query)); }
From source file:at.ac.univie.mminf.luceneSKOS.analysis.SKOSURIFilterTest.java
License:Apache License
@Test public void singleUriExpansionWithStoredField() throws CorruptIndexException, IOException { Document doc = new Document(); doc.add(new Field("subject", "http://example.com/concept/1", Field.Store.YES, Field.Index.ANALYZED)); writer.addDocument(doc);//from ww w.j av a 2s . c om searcher = new IndexSearcher(IndexReader.open(writer, false)); Query query = new TermQuery(new Term("subject", "leaps")); TopDocs results = searcher.search(query, 10); Assert.assertEquals(1, results.totalHits); Document indexDoc = searcher.doc(results.scoreDocs[0].doc); String[] fieldValues = indexDoc.getValues("subject"); Assert.assertEquals(1, fieldValues.length); Assert.assertEquals(fieldValues[0], "http://example.com/concept/1"); }
From source file:at.ac.univie.mminf.luceneSKOS.analysis.SKOSURIFilterTest.java
License:Apache License
@Test public void singleUriExpansionWithUnstoredField() throws CorruptIndexException, IOException { Document doc = new Document(); doc.add(new Field("subject", "http://example.com/concept/1", Field.Store.NO, Field.Index.ANALYZED)); writer.addDocument(doc);/* w w w . j av a 2 s.c o m*/ searcher = new IndexSearcher(IndexReader.open(writer, false)); Query query = new TermQuery(new Term("subject", "jumps")); TopDocs results = searcher.search(query, 10); Assert.assertEquals(1, results.totalHits); Document indexDoc = searcher.doc(results.scoreDocs[0].doc); String[] fieldValues = indexDoc.getValues("subject"); Assert.assertEquals(0, fieldValues.length); }
From source file:at.ac.univie.mminf.luceneSKOS.analysis.SKOSURIFilterTest.java
License:Apache License
@Test public void multipleURIExpansion() throws CorruptIndexException, IOException { Document doc = new Document(); doc.add(new Field("subject", "http://example.com/concept/1", Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("subject", "http://example.com/concept/2", Field.Store.YES, Field.Index.ANALYZED)); writer.addDocument(doc);//from www .jav a2s . c o m searcher = new IndexSearcher(IndexReader.open(writer, false)); // querying for alternative term of concept 1 Query query = new TermQuery(new Term("subject", "hops")); TopDocs results = searcher.search(query, 10); Assert.assertEquals(1, results.totalHits); Document indexDoc = searcher.doc(results.scoreDocs[0].doc); String[] fieldValues = indexDoc.getValues("subject"); Assert.assertEquals(2, fieldValues.length); // querying for alternative term of concept 2 query = new TermQuery(new Term("subject", "speedy")); results = searcher.search(query, 10); Assert.assertEquals(1, results.totalHits); indexDoc = searcher.doc(results.scoreDocs[0].doc); fieldValues = indexDoc.getValues("subject"); Assert.assertEquals(2, fieldValues.length); }
From source file:at.ac.univie.mminf.luceneSKOS.LabelbasedTermExpansionTest.java
License:Apache License
/** * This test indexes a sample metadata record (=lucene document) having a * "title", "description", and "subject" field. * /* w w w .ja v a2 s.c om*/ * A search for "arms" returns that record as a result because "arms" is * defined as an alternative label for "weapons", the term which is contained * in the subject field. * * @throws IOException */ @Test public void labelBasedTermExpansion() throws IOException { /* defining the document to be indexed */ Document doc = new Document(); doc.add(new Field("title", "Spearhead", Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("description", "Roman iron spearhead. The spearhead was attached to one end of a wooden shaft..." + "The spear was mainly a thrusting weapon, but could also be thrown. " + "It was the principal weapon of the auxiliary soldier... " + "(second - fourth century, Arbeia Roman Fort).", Field.Store.NO, Field.Index.ANALYZED)); doc.add(new Field("subject", "weapons", Field.Store.NO, Field.Index.ANALYZED)); /* setting up the SKOS analyzer */ String skosFile = "src/test/resources/skos_samples/ukat_examples.n3"; /* ExpansionType.URI->the field to be analyzed (expanded) contains URIs */ Analyzer skosAnalyzer = new SKOSAnalyzer(matchVersion, skosFile, ExpansionType.LABEL); /* Define different analyzers for different fields */ Map<String, Analyzer> analyzerPerField = new HashMap<String, Analyzer>(); analyzerPerField.put("subject", skosAnalyzer); PerFieldAnalyzerWrapper indexAnalyzer = new PerFieldAnalyzerWrapper(new SimpleAnalyzer(matchVersion), analyzerPerField); /* setting up a writer with a default (simple) analyzer */ writer = new IndexWriter(new RAMDirectory(), new IndexWriterConfig(matchVersion, indexAnalyzer)); /* adding the document to the index */ writer.addDocument(doc); /* defining a query that searches over all fields */ BooleanQuery query1 = new BooleanQuery(); query1.add(new TermQuery(new Term("title", "arms")), BooleanClause.Occur.SHOULD); query1.add(new TermQuery(new Term("description", "arms")), BooleanClause.Occur.SHOULD); query1.add(new TermQuery(new Term("subject", "arms")), BooleanClause.Occur.SHOULD); /* creating a new searcher */ searcher = new IndexSearcher(IndexReader.open(writer, false)); TopDocs results = searcher.search(query1, 10); /* the document matches because "arms" is among the expanded terms */ Assert.assertEquals(1, results.totalHits); /* defining a query that searches for a broader concept */ Query query2 = new TermQuery(new Term("subject", "military equipment")); results = searcher.search(query2, 10); /* ... also returns the document as result */ Assert.assertEquals(1, results.totalHits); }
From source file:at.ac.univie.mminf.luceneSKOS.queryparser.flexible.standard.SKOSStandardQueryParserTest.java
License:Apache License
@Test public void queryParserSearch() throws IOException, QueryNodeException { Document doc = new Document(); doc.add(new Field("content", "The quick brown fox jumps over the lazy dog", TextField.TYPE_STORED)); writer.addDocument(doc);/* ww w . j a v a 2 s . c o m*/ searcher = new IndexSearcher(DirectoryReader.open(writer, false)); Query query = new SKOSStandardQueryParser(skosAnalyzer).parse("\"fox jumps\"", "content"); Assert.assertEquals(1, TestUtil.hitCount(searcher, query)); Assert.assertEquals("content:\"fox (jumps hops leaps)\"", query.toString()); Assert.assertEquals("org.apache.lucene.search.MultiPhraseQuery", query.getClass().getName()); query = new StandardQueryParser(new StandardAnalyzer(matchVersion)).parse("\"fox jumps\"", "content"); Assert.assertEquals(1, TestUtil.hitCount(searcher, query)); Assert.assertEquals("content:\"fox jumps\"", query.toString()); Assert.assertEquals("org.apache.lucene.search.PhraseQuery", query.getClass().getName()); }
From source file:at.ac.univie.mminf.luceneSKOS.queryparser.flexible.standard.SKOSStandardQueryParserTest.java
License:Apache License
@Test public void queryParserSearchWithBoosts() throws IOException, QueryNodeException { Document doc = new Document(); doc.add(new Field("content", "The quick brown fox jumps over the lazy dog", TextField.TYPE_STORED)); writer.addDocument(doc);// ww w.ja v a2 s . com searcher = new IndexSearcher(DirectoryReader.open(writer, false)); SKOSStandardQueryParser parser = new SKOSStandardQueryParser(skosAnalyzer); parser.setBoost(SKOSType.ALT, 0.5f); Query query = parser.parse("\"fox jumps\"", "content"); Assert.assertEquals(1, TestUtil.hitCount(searcher, query)); // boosts do not work in phrase queries Assert.assertEquals("content:\"fox (jumps hops leaps)\"", query.toString()); Assert.assertEquals("org.apache.lucene.search.MultiPhraseQuery", query.getClass().getName()); query = parser.parse("fox jumps", "content"); Assert.assertEquals(1, TestUtil.hitCount(searcher, query)); Assert.assertEquals("content:fox (content:jumps content:hops^0.5 content:leaps^0.5)", query.toString()); Assert.assertEquals("org.apache.lucene.search.BooleanQuery", query.getClass().getName()); query = new SKOSStandardQueryParser(new StandardAnalyzer(matchVersion)).parse("fox jumps", "content"); Assert.assertEquals(1, TestUtil.hitCount(searcher, query)); Assert.assertEquals("content:fox content:jumps", query.toString()); Assert.assertEquals("org.apache.lucene.search.BooleanQuery", query.getClass().getName()); }
From source file:at.ac.univie.mminf.luceneSKOS.skos.impl.SKOSEngineImpl.java
License:Apache License
/** * This constructor loads the SKOS model from a given InputStream using the * given serialization language parameter, which must be either N3, RDF/XML, * or TURTLE./*from w ww. jav a2s. com*/ * * @param inputStream * the input stream * @param lang * the serialization language * @throws IOException * if the model cannot be loaded */ public SKOSEngineImpl(final Version version, InputStream inputStream, String lang) throws IOException { if (!("N3".equals(lang) || "RDF/XML".equals(lang) || "TURTLE".equals(lang))) { throw new IOException("Invalid RDF serialization format"); } matchVersion = version; analyzer = new SimpleAnalyzer(matchVersion); skosModel = ModelFactory.createDefaultModel(); skosModel.read(inputStream, null, lang); indexDir = new RAMDirectory(); entailSKOSModel(); indexSKOSModel(); searcher = new IndexSearcher(IndexReader.open(indexDir)); }
From source file:at.ac.univie.mminf.luceneSKOS.skos.impl.SKOSEngineImpl.java
License:Apache License
/** * This constructor loads the SKOS model from a given filename or URI, starts * the indexing process and sets up the index searcher. * //w w w.j a v a 2 s . c o m * @param languages * the languages to be considered * @param filenameOrURI * @throws IOException */ public SKOSEngineImpl(final Version version, String filenameOrURI, String... languages) throws IOException { matchVersion = version; analyzer = new SimpleAnalyzer(matchVersion); String langSig = ""; if (languages != null) { this.languages = new TreeSet<String>(Arrays.asList(languages)); langSig = "-" + StringUtils.join(this.languages, "."); } String name = FilenameUtils.getName(filenameOrURI); File dir = new File("skosdata/" + name + langSig); indexDir = FSDirectory.open(dir); // TODO: Generate also if source file is modified if (!dir.isDirectory()) { // load the skos model from the given file FileManager fileManager = new FileManager(); fileManager.addLocatorFile(); fileManager.addLocatorURL(); fileManager.addLocatorClassLoader(SKOSEngineImpl.class.getClassLoader()); if (FilenameUtils.getExtension(filenameOrURI).equals("zip")) { fileManager.addLocatorZip(filenameOrURI); filenameOrURI = FilenameUtils.getBaseName(filenameOrURI); } skosModel = fileManager.loadModel(filenameOrURI); entailSKOSModel(); indexSKOSModel(); } searcher = new IndexSearcher(IndexReader.open(indexDir)); }