Example usage for org.apache.lucene.search IndexSearcher search

List of usage examples for org.apache.lucene.search IndexSearcher search

Introduction

In this page you can find the example usage for org.apache.lucene.search IndexSearcher search.

Prototype

public <C extends Collector, T> T search(Query query, CollectorManager<C, T> collectorManager)
        throws IOException 

Source Link

Document

Lower-level search API.

Usage

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