package com.browseengine.bobo.test; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import junit.framework.TestCase; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.Field.Store; import org.apache.lucene.document.StringField; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.index.IndexWriterConfig.OpenMode; import org.apache.lucene.store.RAMDirectory; import org.apache.lucene.util.Version; import com.browseengine.bobo.api.BoboBrowser; import com.browseengine.bobo.api.BoboMultiReader; import com.browseengine.bobo.api.BrowseFacet; import com.browseengine.bobo.api.BrowseRequest; import com.browseengine.bobo.api.BrowseResult; import com.browseengine.bobo.api.BrowseSelection; import com.browseengine.bobo.api.FacetAccessible; import com.browseengine.bobo.api.FacetSpec; import com.browseengine.bobo.facets.FacetHandler; import com.browseengine.bobo.facets.impl.PathFacetHandler; public class TestPathMultiVal extends TestCase { private RAMDirectory directory; private Analyzer analyzer; private final List<FacetHandler<?>> facetHandlers; static final String PathHandlerName = "path"; public TestPathMultiVal(String name) { super(name); facetHandlers = new LinkedList<FacetHandler<?>>(); } private void addMetaDataField(Document doc, String name, String[] vals) { for (String val : vals) { Field field = new StringField(name, val, Store.NO); doc.add(field); } } @Override protected void setUp() throws Exception { directory = new RAMDirectory(); analyzer = new WhitespaceAnalyzer(Version.LUCENE_43); IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, analyzer); config.setOpenMode(OpenMode.CREATE); IndexWriter writer = new IndexWriter(directory, config); Document doc = new Document(); addMetaDataField(doc, PathHandlerName, new String[] { "/a/b/c", "/a/b/d" }); writer.addDocument(doc); writer.commit(); PathFacetHandler pathHandler = new PathFacetHandler("path", true); facetHandlers.add(pathHandler); } public void testMultiValPath() throws Exception { DirectoryReader reader = DirectoryReader.open(directory); BoboMultiReader boboReader = BoboMultiReader.getInstance(reader, facetHandlers); BoboBrowser browser = new BoboBrowser(boboReader); BrowseRequest req = new BrowseRequest(); BrowseSelection sel = new BrowseSelection(PathHandlerName); sel.addValue("/a"); HashMap<String, String> propMap = new HashMap<String, String>(); propMap.put(PathFacetHandler.SEL_PROP_NAME_DEPTH, "0"); propMap.put(PathFacetHandler.SEL_PROP_NAME_STRICT, "false"); sel.setSelectionProperties(propMap); req.addSelection(sel); FacetSpec fs = new FacetSpec(); fs.setMinHitCount(1); req.setFacetSpec(PathHandlerName, fs); BrowseResult res = browser.browse(req); assertEquals(res.getNumHits(), 1); FacetAccessible fa = res.getFacetAccessor(PathHandlerName); List<BrowseFacet> facets = fa.getFacets(); System.out.println(facets); assertEquals(1, facets.size()); BrowseFacet facet = facets.get(0); assertEquals(2, facet.getFacetValueHitCount()); } }