r475 - in bobobrowselucenefacets: . src/main/java/org/bobo
Author: echatellier Date: 2011-08-16 15:51:55 +0200 (Tue, 16 Aug 2011) New Revision: 475 Url: http://nuiton.org/repositories/revision/sandbox/475 Log: Update to test range facets Added: bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneDateFacets.java Modified: bobobrowselucenefacets/pom.xml bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneFacets.java Modified: bobobrowselucenefacets/pom.xml =================================================================== --- bobobrowselucenefacets/pom.xml 2011-08-11 15:55:11 UTC (rev 474) +++ bobobrowselucenefacets/pom.xml 2011-08-16 13:51:55 UTC (rev 475) @@ -8,12 +8,23 @@ <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> - <version>3.2.0</version> + <version>3.3.0</version> </dependency> <dependency> <groupId>com.browseengine</groupId> <artifactId>bobo-browse</artifactId> <version>2.5.0</version> </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>1.2.16</version> + <scope>runtime</scope> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <version>3.0.1</version> + </dependency> </dependencies> </project> \ No newline at end of file Added: bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneDateFacets.java =================================================================== --- bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneDateFacets.java (rev 0) +++ bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneDateFacets.java 2011-08-16 13:51:55 UTC (rev 475) @@ -0,0 +1,208 @@ +/* + * #%L + * + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2011 Codelutin, Chatellier Eric + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +package org.bobo; + +import static org.apache.lucene.document.DateTools.Resolution.MILLISECOND; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.time.DateUtils; +import org.apache.lucene.analysis.Analyzer; +import org.apache.lucene.analysis.standard.StandardAnalyzer; +import org.apache.lucene.document.DateTools; +import org.apache.lucene.document.Document; +import org.apache.lucene.document.Field; +import org.apache.lucene.document.Field.Index; +import org.apache.lucene.document.Field.Store; +import org.apache.lucene.index.CorruptIndexException; +import org.apache.lucene.index.IndexReader; +import org.apache.lucene.index.IndexWriter; +import org.apache.lucene.index.IndexWriterConfig; +import org.apache.lucene.queryParser.ParseException; +import org.apache.lucene.queryParser.QueryParser; +import org.apache.lucene.search.Query; +import org.apache.lucene.store.Directory; +import org.apache.lucene.store.LockObtainFailedException; +import org.apache.lucene.store.NIOFSDirectory; +import org.apache.lucene.util.Version; + +import com.browseengine.bobo.api.BoboBrowser; +import com.browseengine.bobo.api.BoboIndexReader; +import com.browseengine.bobo.api.Browsable; +import com.browseengine.bobo.api.BrowseException; +import com.browseengine.bobo.api.BrowseFacet; +import com.browseengine.bobo.api.BrowseHit; +import com.browseengine.bobo.api.BrowseRequest; +import com.browseengine.bobo.api.BrowseResult; +import com.browseengine.bobo.api.FacetAccessible; +import com.browseengine.bobo.api.FacetSpec; +import com.browseengine.bobo.api.FacetSpec.FacetSortSpec; +import com.browseengine.bobo.facets.FacetHandler; +import com.browseengine.bobo.facets.impl.RangeFacetHandler; + +/** + * TODO add comment here. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class TestLuceneDateFacets { + + protected static Analyzer analyser = new StandardAnalyzer(Version.LUCENE_32); + + public static void main(String... args) throws IOException, ParseException, BrowseException { + create(); + search(); + } + + /** + * Get lucene index directory. + * + * @return lucene index directory + * @throws IOException + */ + protected static Directory getIndexDirectory() throws IOException { + File path = new File("/tmp/bobo/index"); + Directory directory = new NIOFSDirectory(path); + return directory; + } + + public static void create() throws CorruptIndexException, LockObtainFailedException, IOException { + + IndexWriter writer = new IndexWriter(getIndexDirectory(), new IndexWriterConfig(Version.LUCENE_33, analyser)); + writer.deleteAll(); + + // get dates + Calendar nowCalendar = Calendar.getInstance(); + Date now = nowCalendar.getTime(); + + nowCalendar.add(Calendar.DAY_OF_YEAR, 1); + Date nowplus1 = nowCalendar.getTime(); + + nowCalendar.add(Calendar.DAY_OF_YEAR, 7); + Date nowplus7 = nowCalendar.getTime(); + + + Document doc1 = new Document(); + doc1.add(new Field("id", "1", Store.YES, Index.ANALYZED)); + doc1.add(new Field("author", "red", Store.YES, Index.ANALYZED)); + doc1.add(new Field("date", DateTools.timeToString(now.getTime(),MILLISECOND), Store.YES, Index.ANALYZED)); + writer.addDocument(doc1); + + Document doc2 = new Document(); + doc2.add(new Field("id", "2", Store.YES, Index.ANALYZED)); + doc2.add(new Field("author", "blue", Store.YES, Index.ANALYZED)); + doc2.add(new Field("date", DateTools.timeToString(nowplus1.getTime(),MILLISECOND), Store.YES, Index.ANALYZED)); + writer.addDocument(doc2); + + Document doc3 = new Document(); + doc3.add(new Field("id", "3", Store.YES, Index.ANALYZED)); + doc3.add(new Field("author", "blue", Store.YES, Index.ANALYZED)); + doc3.add(new Field("date", DateTools.timeToString(nowplus7.getTime(),MILLISECOND), Store.YES, Index.ANALYZED)); + writer.addDocument(doc3); + + + writer.optimize(); + writer.close(); + } + + public static void search() throws IOException, ParseException, BrowseException { + // define facet handlers + + Calendar nowCalendar = Calendar.getInstance(); + nowCalendar.set(Calendar.DAY_OF_WEEK, nowCalendar.getFirstDayOfWeek()); + Date mondayThisWeek = DateUtils.ceiling(nowCalendar.getTime(), Calendar.DAY_OF_MONTH); + Date mondayNextWeek = DateUtils.addDays(mondayThisWeek, 7); + Date mondayNextNextWeek = DateUtils.addDays(mondayNextWeek, 7); + + System.out.println("mondayThisWeek = " + mondayThisWeek); + System.out.println("mondayNextWeek = " + mondayNextWeek); + System.out.println("mondayNextNextWeek = " + mondayNextNextWeek); + + // queries + List<String> dateRange = new ArrayList<String>(); + dateRange.add("[" + DateTools.timeToString(mondayThisWeek.getTime(), MILLISECOND) + " TO " + DateTools.timeToString(mondayNextWeek.getTime(),MILLISECOND) + "]"); + dateRange.add("[" + DateTools.timeToString(mondayNextWeek.getTime(), MILLISECOND) + " TO " + DateTools.timeToString(mondayNextNextWeek.getTime(),MILLISECOND) + "]"); + dateRange.add("[" + DateTools.timeToString(mondayNextNextWeek.getTime(), MILLISECOND) + " TO *]"); + + System.out.println("dateRange = " + dateRange); + + // color facet handler + RangeFacetHandler dateHandler = new RangeFacetHandler("date", dateRange); + + List<FacetHandler<?>> handlerList = Arrays.asList(new FacetHandler<?>[] { dateHandler }); + + // opening a lucene index + IndexReader reader = IndexReader.open(getIndexDirectory(), true); + + // decorate it with a bobo index reader + BoboIndexReader boboReader = BoboIndexReader.getInstance(reader, handlerList); + + // creating a browse request + BrowseRequest br = new BrowseRequest(); + br.setCount(10); + br.setOffset(0); + + // add a selection + //BrowseSelection sel = new BrowseSelection("color"); + //sel.addValue("red"); + //br.addSelection(sel); + + // parse a query + QueryParser parser = new QueryParser(Version.LUCENE_33, "content", analyser); + Query q = parser.parse("*:*"); + br.setQuery(q); + + // add the facet output specs + FacetSpec dateSpec = new FacetSpec(); + dateSpec.setOrderBy(FacetSortSpec.OrderHitsDesc); + + br.setFacetSpec("date", dateSpec); + + // perform browse + Browsable browser = new BoboBrowser(boboReader); + BrowseResult result = browser.browse(br); + + int totalHits = result.getNumHits(); + BrowseHit[] hits = result.getHits(); + + Map<String, FacetAccessible> facetMap = result.getFacetMap(); + + FacetAccessible dateFacets = facetMap.get("date"); + List<BrowseFacet> facetVals = dateFacets.getFacets(); + System.out.println("Facet " + facetVals); + } +} Property changes on: bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneDateFacets.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Modified: bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneFacets.java =================================================================== --- bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneFacets.java 2011-08-11 15:55:11 UTC (rev 474) +++ bobobrowselucenefacets/src/main/java/org/bobo/TestLuceneFacets.java 2011-08-16 13:51:55 UTC (rev 475) @@ -97,7 +97,7 @@ public static void create() throws CorruptIndexException, LockObtainFailedException, IOException { - IndexWriter writer = new IndexWriter(getIndexDirectory(), new IndexWriterConfig(Version.LUCENE_32, analyser)); + IndexWriter writer = new IndexWriter(getIndexDirectory(), new IndexWriterConfig(Version.LUCENE_33, analyser)); writer.deleteAll(); Document doc1 = new Document(); @@ -152,7 +152,7 @@ //br.addSelection(sel); // parse a query - QueryParser parser = new QueryParser(Version.LUCENE_32, "content", analyser); + QueryParser parser = new QueryParser(Version.LUCENE_33, "content", analyser); Query q = parser.parse("name:tutu"); br.setQuery(q);
participants (1)
-
echatellier@users.nuiton.org