List of usage examples for org.apache.lucene.search IndexSearcher search
public <C extends Collector, T> T search(Query query, CollectorManager<C, T> collectorManager) throws IOException
From source file:com.spd.ukraine.lucenewebsearch1.web.IndexingController.java
public boolean containsPage(String url) throws IOException, ParseException { // searchIndex(indexDir, url, hits); // Directory directory = FSDirectory.open(indexDir);//.getDirectory(indexDir); try {//from www . j av a 2 s .c om System.out.println("directory.listAll() " + Arrays.toString(directory.listAll())); IndexReader indexReader = DirectoryReader.open(directory); IndexSearcher searcher = new IndexSearcher(indexReader); QueryParser parser = new QueryParser(Version.LUCENE_43, URL_FIELD, new StandardAnalyzer(Version.LUCENE_43)); //new SimpleAnalyzer() org.apache.lucene.search.Query query = parser.parse(QueryParser.escape(url)); TopDocs topDocs = searcher.search(query, 1); ScoreDoc[] hits = topDocs.scoreDocs; System.out.println("hits.length " + hits.length); return hits.length > 0; } catch (org.apache.lucene.index.IndexNotFoundException ex) { return false; } }
From source file:com.spd.ukraine.lucenewebsearch1.web.IndexingController.java
/** * Method used to search phrase in search database. * * @param phrase/* ww w . ja v a 2 s . c o m*/ * @param fieldName to search in it * @return Collection<WebPage> with search data saved in WebPage fields * @throws java.io.IOException * @throws org.apache.lucene.queryparser.classic.ParseException */ public Collection<WebPage> searchPhrase(String phrase, String fieldName) throws IOException, ParseException { if (null == phrase) { return new ArrayList<>(); } // searchIndex(indexDir, phrase, hits); // Directory directory = FSDirectory.open(indexDir);//.getDirectory(indexDir); IndexReader indexReader = DirectoryReader.open(directory); IndexSearcher searcher = new IndexSearcher(indexReader); QueryParser parser = new QueryParser(Version.LUCENE_43, fieldName, new StandardAnalyzer(Version.LUCENE_43)); //new SimpleAnalyzer() org.apache.lucene.search.Query query = parser.parse(phrase); TopDocs topDocs = searcher.search(query, MAX_HITS); ScoreDoc[] hits = topDocs.scoreDocs; List<WebPage> searchResults = new ArrayList<>(); for (ScoreDoc hit : hits) { int docId = hit.doc; org.apache.lucene.document.Document d = searcher.doc(docId); System.out.println("'" + d.get(URL_FIELD) + "' '" + d.get(TITLE_FIELD) + "'"); // + " " + d.get("content")); WebPage webPage = new WebPage(); webPage.setUrl(d.get(URL_FIELD)); webPage.setTitle(highLightPhrase(d.get(TITLE_FIELD), phrase)); webPage.setContent(truncateText(d.get(CONTENT_FIELD), phrase)); searchResults.add(webPage); } System.out.println("Found " + hits.length); return new LinkedHashSet<>(searchResults); }
From source file:com.stratio.cassandra.index.LuceneIndex.java
License:Apache License
private TopDocs topDocs(IndexSearcher searcher, Query query, Sort sort, ScoreDoc after, int count, boolean usesRelevance) throws IOException { if (sort == null) { if (!usesRelevance) { FieldDoc start = after == null ? null : (FieldDoc) after; TopFieldCollector tfc = TopFieldCollector.create(this.sort, count, start, true, false, false, false);/* w w w .j av a 2 s . c o m*/ Collector collector = new EarlyTerminatingSortingCollector(tfc, this.sort, count); searcher.search(query, collector); return tfc.topDocs(); } else { return searcher.searchAfter(after, query, count); } } else { return searcher.searchAfter(after, query, count, sort); } }
From source file:com.svenjacobs.lugaene.GaeDirectoryTest.java
License:Apache License
@Test public void wholeCycle() throws Exception { // Index/* ww w . ja va 2 s.c o m*/ final Directory directory = new GaeDirectory("Test"); final Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_44); final IndexWriterConfig config = GaeIndexWriterConfigHelper.create(Version.LUCENE_44, analyzer); final IndexWriter indexWriter = new IndexWriter(directory, config); final Document doc1 = new Document(); doc1.add(new StringField(FIELD_TITLE, "Title1", Field.Store.YES)); doc1.add(new TextField(FIELD_CONTENTS, "keyword1 keyword2 lorem ipsum", Field.Store.NO)); indexWriter.addDocument(doc1); final Document doc2 = new Document(); doc2.add(new StringField(FIELD_TITLE, "Title2", Field.Store.YES)); doc2.add(new TextField(FIELD_CONTENTS, "keyword3 keyword4 lorem ipsum", Field.Store.NO)); indexWriter.addDocument(doc2); indexWriter.close(); // Search final DirectoryReader reader = DirectoryReader.open(directory); final IndexSearcher searcher = new IndexSearcher(reader); final BooleanQuery query = new BooleanQuery(); query.add(new TermQuery(new Term(FIELD_TITLE, "Title1")), BooleanClause.Occur.MUST); query.add(new TermQuery(new Term(FIELD_CONTENTS, "lorem")), BooleanClause.Occur.MUST); ScoreDoc[] hits = searcher.search(query, 100).scoreDocs; assertThat(hits.length, is(1)); assertThat(searcher.doc(hits[0].doc).get(FIELD_TITLE), is("Title1")); hits = searcher.search(new TermQuery(new Term(FIELD_CONTENTS, "lorem")), 100).scoreDocs; assertThat(hits.length, is(2)); assertThat(searcher.doc(hits[0].doc).get(FIELD_TITLE), is("Title1")); assertThat(searcher.doc(hits[1].doc).get(FIELD_TITLE), is("Title2")); hits = searcher.search(new TermQuery(new Term(FIELD_CONTENTS, "keyword3")), 100).scoreDocs; assertThat(hits.length, is(1)); assertThat(searcher.doc(hits[0].doc).get(FIELD_TITLE), is("Title2")); }
From source file:com.sxc.lucene.analysis.codec.MetaphoneAnalyzerTest.java
License:Apache License
public void testKoolKat() throws Exception { RAMDirectory directory = new RAMDirectory(); Analyzer analyzer = new MetaphoneReplacementAnalyzer(); IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_47, analyzer); IndexWriter writer = new IndexWriter(directory, indexWriterConfig); Document doc = new Document(); doc.add(new TextField("contents", "cool cat", Field.Store.YES)); writer.addDocument(doc);//from w ww . j a va 2 s.c o m writer.close(); IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(directory)); Query query = new QueryParser(Version.LUCENE_47, "contents", analyzer).parse("kool kat"); TopDocs hits = searcher.search(query, 1); assertEquals(1, hits.totalHits); int docID = hits.scoreDocs[0].doc; doc = searcher.doc(docID); assertEquals("cool cat", doc.get("contents")); searcher.getIndexReader().close(); }
From source file:com.sxc.lucene.searching.BasicSearchingTest.java
License:Apache License
public void testTerm() throws Exception { IndexReader reader = DirectoryReader.open(directory); // A IndexSearcher searcher = new IndexSearcher(reader); // B Term t = new Term("country", ""); Query query = new TermQuery(t); TopDocs docs = searcher.search(query, 1); System.out.println(docs.totalHits); reader.close();//w w w . j av a 2 s . c o m directory.close(); }
From source file:com.sxc.lucene.searching.BasicSearchingTest.java
License:Apache License
public void testQueryParser() throws Exception { IndexReader reader = DirectoryReader.open(directory); // A IndexSearcher searcher = new IndexSearcher(reader); // B QueryParser parser = new QueryParser(Version.LUCENE_47, "contents", new SmartChineseAnalyzer(Version.LUCENE_47)); Query query = parser.parse("* OR *"); TopDocs docs = searcher.search(query, 10); assertEquals(2, docs.totalHits);// w w w . j a v a2 s . c o m Document d = searcher.doc(docs.scoreDocs[0].doc); assertEquals("", d.get("country")); directory.close(); }
From source file:com.sxc.lucene.searching.BooleanQueryTest.java
License:Apache License
public void testAnd() throws Exception { TermQuery searchingBooks = new TermQuery(new Term("subject", "search")); //#1 Query books2010 = //#2 NumericRangeQuery.newIntRange("pubmonth", 201001, //#2 201012, //#2 true, true); //#2 BooleanQuery searchingBooks2010 = new BooleanQuery(); //#3 searchingBooks2010.add(searchingBooks, BooleanClause.Occur.MUST); //#3 searchingBooks2010.add(books2010, BooleanClause.Occur.MUST); //#3 Directory dir = TestUtil.getBookIndexDirectory(); IndexReader reader = DirectoryReader.open(dir); IndexSearcher searcher = new IndexSearcher(reader); TopDocs matches = searcher.search(searchingBooks2010, 10); assertTrue(TestUtil.hitsIncludeTitle(searcher, matches, "Lucene in Action, Second Edition")); reader.close();//from w w w. ja va 2s .c o m dir.close(); }
From source file:com.sxc.lucene.searching.BooleanQueryTest.java
License:Apache License
public void testOr() throws Exception { TermQuery methodologyBooks = new TermQuery( // #1 new Term("category", // #1 "/technology/computers/programming/methodology")); // #1 TermQuery easternPhilosophyBooks = new TermQuery( // #2 new Term("category", // #2 "/philosophy/eastern")); // #2 BooleanQuery enlightenmentBooks = new BooleanQuery(); // #3 enlightenmentBooks.add(methodologyBooks, // #3 BooleanClause.Occur.SHOULD); // #3 enlightenmentBooks.add(easternPhilosophyBooks, // #3 BooleanClause.Occur.SHOULD); // #3 Directory dir = TestUtil.getBookIndexDirectory(); IndexReader reader = DirectoryReader.open(dir); IndexSearcher searcher = new IndexSearcher(reader); TopDocs matches = searcher.search(enlightenmentBooks, 10); System.out.println("or = " + enlightenmentBooks); assertTrue(TestUtil.hitsIncludeTitle(searcher, matches, "Extreme Programming Explained")); assertTrue(TestUtil.hitsIncludeTitle(searcher, matches, "Tao Te Ching \u9053\u5FB7\u7D93")); reader.close();/* ww w . j a va 2 s . c om*/ dir.close(); }
From source file:com.sxc.lucene.searching.TermRangeQueryTest.java
License:Apache License
public void testTermRangeQuery() throws Exception { String indexDir = "D:/programming/lucene/indexingTest"; Directory dir = FSDirectory.open(new File(indexDir)); IndexReader reader = DirectoryReader.open(dir); IndexSearcher searcher = new IndexSearcher(reader); TermRangeQuery query = TermRangeQuery.newStringRange("id", "1", "4", true, true); TopDocs matches = searcher.search(query, 100); assertEquals(2, matches.totalHits);//from ww w . ja v a 2 s .co m reader.close(); dir.close(); }