Advertisement
gaelikun

Lucene 2.0 Index Builder

Mar 23rd, 2014
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.43 KB | None | 0 0
  1. package org.mywebapp.indexer;
  2.  
  3. import org.mywebapp.pojos.MyWebAppDAO;
  4. import org.mywebapp.pojos.Entry;
  5. import org.mywebapp.pojos.Category;
  6. import org.mywebapp.index.MyWebAppAnalyzer;
  7.  
  8. import org.apache.lucene.document.Document;
  9. import org.apache.lucene.document.Field;
  10. import org.apache.lucene.index.IndexWriter;
  11.  
  12. import java.util.Iterator;
  13. import java.util.List;
  14.  
  15. public class IndexBuilder {
  16.  
  17.     private MyWebAppDAO manager = MyWebAppDAO.getInstance();
  18.  
  19.     public IndexBuilder() {
  20.         //...
  21.     }
  22.  
  23.     public void buildIndex() {
  24.         try{
  25.             IndexWriter cWriter = new IndexWriter("/home/mywebapp/categories-index/", new MyWebAppAnalyzer(), true);
  26.             IndexWriter eWriter = new IndexWriter("/home/mywebapp/entries-index/", new MyWebAppAnalyzer(), true);
  27.             Category category = (Category) this.manager.getById(Category.class, 1);
  28.            
  29.             buildDocs(cWriter, eWriter, category, keywords);
  30.  
  31.             cWriter.optimize();
  32.             eWriter.optimize();
  33.            
  34.             cWriter.close();
  35.             eWriter.close();
  36.            
  37.         } catch (Exception e) {
  38.             e.printStackTrace();
  39.         }
  40.     }
  41.  
  42.     private void buildDocs(IndexWriter cWriter, IndexWriter eWriter, Category category, String keywords) {
  43.         String myKeywords = keywords + " " + category.getName();
  44.         Document d = new Document();
  45.  
  46.         d.add(new Field("id", "" + category.getId(), Field.Store.YES, Field.Index.UN_TOKENIZED));
  47.         d.add(new Field("name", category.getName(), Field.Store.YES, Field.Index.NO));
  48.         d.add(new Field("title", category.getTitle(), Field.Store.YES, Field.Index.NO));
  49.         d.add(new Field("description", category.getDescription(), Field.Store.YES, Field.Index.NO);
  50.         d.add(new Field("keywords", myKeywords, Field.Store.NO, Field.Index.TOKENIZED));
  51.         try {
  52.             cWriter.addDocument(d);
  53.             buildEntryIndexDocs(eWriter, category);
  54.         } catch (Exception e) {
  55.             e.printStackTrace();
  56.             return;
  57.         }
  58.         List tl = this.manager.getCategoriesByRef(category.getId());
  59.         Iterator topIterator = tl.iterator();
  60.         while (topIterator.hasNext()) {
  61.             buildDocs(cWriter, eWriter, (Category) topIterator.next(), myKeywords);
  62.         }
  63.     }
  64.  
  65.     private void buildEntryIndexDocs(IndexWriter writer, Category category) {
  66.         try {
  67.             List l = this.manager.getEntriesByCategory(category.getId());
  68.             Entry entry;
  69.             Document d;
  70.             Iterator i = l.iterator();
  71.             while (i.hasNext()) {
  72.                 entry = (Entry) i.next();
  73.                 d = new Document();
  74.                 d.add(new Field("id", "" + entry.getId(), Field.Store.YES, Field.Index.UN_TOKENIZED));
  75.                 d.add(new Field("url", entry.getUrl(), Field.Store.YES, Field.Index.UN_TOKENIZED));
  76.                 d.add(new Field("title", entry.getTitle(), Field.Store.YES, Field.Index.UN_TOKENIZED));
  77.                 d.add(new Field("description", entry.getDescription(), Field.Store.YES, Field.Index.NO));
  78.                 d.add(new Field("keywords", entry.getKeywords(), Field.Store.YES, Field.Index.TOKENIZED));
  79.                 d.add(new Field("category", "" + entry.getCategory(), Field.Store.YES, Field.Index.UN_TOKENIZED));
  80.                 writer.addDocument(d);
  81.             }
  82.         } catch (Exception e) {
  83.             e.printStackTrace();
  84.         }
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement