KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openedit > archive > jobtracking > JobSearch


1 package org.openedit.archive.jobtracking;
2
3 import java.io.File JavaDoc;
4 import java.util.Iterator JavaDoc;
5 import java.util.List JavaDoc;
6
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.apache.lucene.document.Document;
10 import org.apache.lucene.document.Field;
11 import org.apache.lucene.index.IndexReader;
12 import org.apache.lucene.index.IndexWriter;
13
14 import com.openedit.modules.search.BaseLuceneSearch;
15 import com.openedit.page.manage.PageManager;
16 import com.openedit.util.FileUtils;
17 import com.openedit.util.PathUtilities;
18
19 public class JobSearch extends BaseLuceneSearch
20 {
21     protected JobArchive fieldJobArchive;
22     protected PageManager fieldPageManager;
23     private static final Log log = LogFactory.getLog(JobSearch.class);
24
25     public void reIndexAll() throws Exception JavaDoc
26     {
27         File JavaDoc existing = buildIndexDir("A");
28         if( IndexReader.indexExists(existing) )
29         {
30             getLiveSearcher();
31         }
32         List JavaDoc list = getPageManager().getRepository().getChildrenNames(getJobArchive().getStore().getStoreHome() + "/data/jobs/");
33         File JavaDoc newIndex = buildIndexDir("new");
34
35         buildIndex(newIndex,list);
36
37         FileUtils utils = new FileUtils();
38         utils.deleteAll(existing);
39         utils.move(newIndex, existing);
40         clearIndex();
41     }
42
43     private void buildIndex(File JavaDoc deadIndexDir, List JavaDoc inPaths) throws Exception JavaDoc
44     {
45         new FileUtils().deleteAll(deadIndexDir);
46         deadIndexDir.mkdirs();
47         IndexWriter writer = new IndexWriter(deadIndexDir, getAnalyzer(), true);
48         //http://www.onjava.com/pub/a/onjava/2003/03/05/lucene.html
49
//http://www.onjava.com/pub/a/onjava/2003/03/05/lucene.html?page=2
50
//writer.mergeFactor = 10;
51
writer.setMergeFactor(100);
52         try
53         {
54             for (Iterator JavaDoc iter = inPaths.iterator(); iter.hasNext();)
55             {
56                 String JavaDoc path = (String JavaDoc) iter.next();
57                 if( path.endsWith(".xml"))
58                 {
59                     String JavaDoc id = PathUtilities.extractPageName(path);
60                     Job job = getJobArchive().getJobById(id);
61                     
62                     if (job != null )
63                     {
64                         Document doc = new Document();
65                         doc.add(new Field("id", job.getId(), Field.Store.YES, Field.Index.TOKENIZED));
66                         String JavaDoc open = job.isOpen() ? "open":"closed";
67                         doc.add(new Field("status",open, Field.Store.YES, Field.Index.TOKENIZED));
68                         writer.addDocument(doc);
69                     }
70                     else
71                     {
72                         log.info("Error loading product:" + id);
73                     }
74                 }
75             }
76             writer.optimize();
77
78         }
79         finally
80         {
81             writer.close();
82         }
83     }
84
85     public JobArchive getJobArchive()
86     {
87         return fieldJobArchive;
88     }
89
90     public void setJobArchive(JobArchive inJobArchive)
91     {
92         fieldJobArchive = inJobArchive;
93     }
94
95     public PageManager getPageManager()
96     {
97         return fieldPageManager;
98     }
99
100     public void setPageManager(PageManager inPageManager)
101     {
102         fieldPageManager = inPageManager;
103     }
104
105 }
106
Popular Tags