Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.mywebapp.indexer;
- import org.mywebapp.pojos.MyWebAppDAO;
- import org.mywebapp.pojos.Entry;
- import org.mywebapp.pojos.Category;
- import org.mywebapp.index.MyWebAppAnalyzer;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.document.Field;
- import org.apache.lucene.index.IndexWriter;
- import java.util.Iterator;
- import java.util.List;
- public class IndexBuilder {
- private MyWebAppDAO manager = MyWebAppDAO.getInstance();
- public IndexBuilder() {
- //...
- }
- public void buildIndex() {
- try{
- IndexWriter cWriter = new IndexWriter("/home/mywebapp/categories-index/", new MyWebAppAnalyzer(), true);
- IndexWriter eWriter = new IndexWriter("/home/mywebapp/entries-index/", new MyWebAppAnalyzer(), true);
- Category category = (Category) this.manager.getById(Category.class, 1);
- buildDocs(cWriter, eWriter, category, keywords);
- cWriter.optimize();
- eWriter.optimize();
- cWriter.close();
- eWriter.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private void buildDocs(IndexWriter cWriter, IndexWriter eWriter, Category category, String keywords) {
- String myKeywords = keywords + " " + category.getName();
- Document d = new Document();
- d.add(new Field("id", "" + category.getId(), Field.Store.YES, Field.Index.UN_TOKENIZED));
- d.add(new Field("name", category.getName(), Field.Store.YES, Field.Index.NO));
- d.add(new Field("title", category.getTitle(), Field.Store.YES, Field.Index.NO));
- d.add(new Field("description", category.getDescription(), Field.Store.YES, Field.Index.NO);
- d.add(new Field("keywords", myKeywords, Field.Store.NO, Field.Index.TOKENIZED));
- try {
- cWriter.addDocument(d);
- buildEntryIndexDocs(eWriter, category);
- } catch (Exception e) {
- e.printStackTrace();
- return;
- }
- List tl = this.manager.getCategoriesByRef(category.getId());
- Iterator topIterator = tl.iterator();
- while (topIterator.hasNext()) {
- buildDocs(cWriter, eWriter, (Category) topIterator.next(), myKeywords);
- }
- }
- private void buildEntryIndexDocs(IndexWriter writer, Category category) {
- try {
- List l = this.manager.getEntriesByCategory(category.getId());
- Entry entry;
- Document d;
- Iterator i = l.iterator();
- while (i.hasNext()) {
- entry = (Entry) i.next();
- d = new Document();
- d.add(new Field("id", "" + entry.getId(), Field.Store.YES, Field.Index.UN_TOKENIZED));
- d.add(new Field("url", entry.getUrl(), Field.Store.YES, Field.Index.UN_TOKENIZED));
- d.add(new Field("title", entry.getTitle(), Field.Store.YES, Field.Index.UN_TOKENIZED));
- d.add(new Field("description", entry.getDescription(), Field.Store.YES, Field.Index.NO));
- d.add(new Field("keywords", entry.getKeywords(), Field.Store.YES, Field.Index.TOKENIZED));
- d.add(new Field("category", "" + entry.getCategory(), Field.Store.YES, Field.Index.UN_TOKENIZED));
- writer.addDocument(d);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement