Package com.browseengine.bobo.test

Source Code of com.browseengine.bobo.test.BasicIndexingTest

package com.browseengine.bobo.test;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.List;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.TopScoreDocCollector;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.browseengine.bobo.api.BoboBrowser;
import com.browseengine.bobo.api.BoboMultiReader;
import com.browseengine.bobo.api.BrowseHit;
import com.browseengine.bobo.api.BrowseRequest;
import com.browseengine.bobo.api.BrowseResult;
import com.browseengine.bobo.api.BrowseSelection;
import com.browseengine.bobo.facets.FacetHandler;
import com.browseengine.bobo.facets.impl.SimpleFacetHandler;

public class BasicIndexingTest {
  private static final String BLUE = "blue";
  private static final String RED = "red";

  private IndexWriter m_indexWriter;

  public BasicIndexingTest() {
    // TODO Auto-generated constructor stub
  }

  @Before
  public void setUp() throws Exception {
    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, new StandardAnalyzer(
        Version.LUCENE_43));
    config.setMaxBufferedDocs(1000);
    m_indexWriter = new IndexWriter(new RAMDirectory(), config);
  }

  @After
  public void tearDown() throws Exception {
    m_indexWriter.close();
  }

  @Test
  public void testWithInterleavedCommitsUsingBobo() throws Exception {
    String text = "text";

    Document doc1 = new Document();
    doc1.add(new TextField(text, "Foo1", Store.YES));
    m_indexWriter.addDocument(doc1);
    m_indexWriter.commit();

    Document doc2 = new Document();
    doc2.add(new TextField(text, "Foo2", Store.YES));
    m_indexWriter.addDocument(doc2);
    m_indexWriter.commit();

    Document doc3 = new Document();
    doc3.add(new TextField(text, "Foo3", Store.YES));
    m_indexWriter.addDocument(doc3);
    m_indexWriter.commit();

    List<FacetHandler<?>> handlerList = Arrays.asList(new FacetHandler<?>[] {});

    DirectoryReader reader = BoboMultiReader.open(m_indexWriter, true);

    BoboMultiReader boboMultiReader = BoboMultiReader.getInstance(reader, handlerList);

    BrowseRequest br = new BrowseRequest();
    br.setCount(10);
    br.setOffset(0);

    QueryParser parser = new QueryParser(Version.LUCENE_43, "text", new StandardAnalyzer(
        Version.LUCENE_43));
    Query q = parser.parse("Foo*");
    br.setQuery(q);

    BoboBrowser browser = new BoboBrowser(boboMultiReader);
    BrowseResult result = browser.browse(br);

    int totalHits = result.getNumHits();
    BrowseHit[] hits = result.getHits();

    assertEquals("should be 3 hits", 3, totalHits);
    assertEquals("should be doc 0", 0, hits[0].getDocid());
    assertEquals("should be doc 1", 1, hits[1].getDocid());
    assertEquals("should be doc 2", 2, hits[2].getDocid());

    result.close();
  }

  @Test
  public void testWithSingleCommit() throws Exception {
    String text = "text";

    Document doc1 = new Document();
    doc1.add(new TextField(text, "Foo1", Store.YES));
    m_indexWriter.addDocument(doc1);

    Document doc2 = new Document();
    doc2.add(new TextField(text, "Foo2", Store.YES));
    m_indexWriter.addDocument(doc2);

    Document doc3 = new Document();
    doc3.add(new TextField(text, "Foo3", Store.YES));
    m_indexWriter.addDocument(doc3);

    m_indexWriter.commit();

    List<FacetHandler<?>> handlerList = Arrays.asList(new FacetHandler<?>[] {});

    DirectoryReader reader = BoboMultiReader.open(m_indexWriter, true);
    BoboMultiReader boboMultiReader = BoboMultiReader.getInstance(reader, handlerList);

    BrowseRequest br = new BrowseRequest();
    br.setCount(10);
    br.setOffset(0);

    QueryParser parser = new QueryParser(Version.LUCENE_43, "text", new StandardAnalyzer(
        Version.LUCENE_43));
    Query q = parser.parse("Foo*");
    br.setQuery(q);

    BoboBrowser browser = new BoboBrowser(boboMultiReader);
    BrowseResult result = browser.browse(br);

    int totalHits = result.getNumHits();
    BrowseHit[] hits = result.getHits();

    assertEquals("should be 3 hits", 3, totalHits);
    assertEquals("should be doc 0", 0, hits[0].getDocid());
    assertEquals("should be doc 1", 1, hits[1].getDocid());
    assertEquals("should be doc 2", 2, hits[2].getDocid());

    result.close();
  }

  @Test
  public void testWithInterleavedCommitsUsingLuceneQuery() throws Exception {
    String text = "text";

    Document doc1 = new Document();
    doc1.add(new TextField(text, "Foo1", Store.YES));
    m_indexWriter.addDocument(doc1);
    m_indexWriter.commit();

    Document doc2 = new Document();
    doc2.add(new TextField(text, "Foo2", Store.YES));
    m_indexWriter.addDocument(doc2);
    m_indexWriter.commit();

    Document doc3 = new Document();
    doc3.add(new TextField(text, "Foo3", Store.YES));
    m_indexWriter.addDocument(doc3);
    m_indexWriter.commit();

    DirectoryReader reader = DirectoryReader.open(m_indexWriter, true);
    IndexSearcher searcher = new IndexSearcher(reader);
    TopScoreDocCollector docCollector = TopScoreDocCollector.create(100, true);
    QueryParser queryParser = new QueryParser(Version.LUCENE_43, "text", new StandardAnalyzer(
        Version.LUCENE_43));
    Query query = queryParser.parse("Foo*");
    searcher.search(query, docCollector);
    TopDocs docs = docCollector.topDocs();
    ScoreDoc[] scoreDocs = docs.scoreDocs;

    assertEquals("should be doc 0", 0, scoreDocs[0].doc);
    assertEquals("should be doc 1", 1, scoreDocs[1].doc);
    assertEquals("should be doc 2", 2, scoreDocs[2].doc);

    reader.close();
  }

  @Test
  public void testWithInterleavedCommitsUsingBoboWithFacets() throws Exception {
    String text = "text";
    String color = "color";

    Document doc1 = new Document();
    doc1.add(new TextField(text, "Foo1", Store.YES));
    doc1.add(new StringField(color, RED, Store.YES));
    m_indexWriter.addDocument(doc1);
    m_indexWriter.commit();

    Document doc2 = new Document();
    doc2.add(new TextField(text, "Foo2", Store.YES));
    doc2.add(new StringField(color, RED, Store.YES));
    m_indexWriter.addDocument(doc2);
    m_indexWriter.commit();

    Document doc3 = new Document();
    doc3.add(new TextField(text, "Foo3", Store.YES));
    doc3.add(new StringField(color, BLUE, Store.YES));
    m_indexWriter.addDocument(doc3);
    m_indexWriter.commit();

    SimpleFacetHandler colorHandler = new SimpleFacetHandler(color);

    List<FacetHandler<?>> handlerList = Arrays.asList(new FacetHandler<?>[] { colorHandler });

    DirectoryReader reader = DirectoryReader.open(m_indexWriter, true);

    BoboMultiReader boboMultiReader = BoboMultiReader.getInstance(reader, handlerList);

    BrowseRequest br = new BrowseRequest();
    br.setCount(10);
    br.setOffset(0);

    BrowseSelection red = new BrowseSelection(color);
    red.addValue(RED);
    red.addValue(BLUE);
    br.addSelection(red);

    QueryParser parser = new QueryParser(Version.LUCENE_43, "text", new StandardAnalyzer(
        Version.LUCENE_43));
    Query q = parser.parse("Foo*");
    br.setQuery(q);

    BoboBrowser browser = new BoboBrowser(boboMultiReader);
    BrowseResult result = browser.browse(br);

    int totalHits = result.getNumHits();
    BrowseHit[] hits = result.getHits();

    assertEquals("should be 3 hits", 3, totalHits);
    assertEquals("should be doc 0", 0, hits[0].getDocid());
    assertEquals("should be doc 1", 1, hits[1].getDocid());
    assertEquals("should be doc 2", 2, hits[2].getDocid());

    result.close();
  }
}
TOP

Related Classes of com.browseengine.bobo.test.BasicIndexingTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.