📄 indexstore.java
字号:
package jaoso.framework.core.search.lucene;
import jaoso.framework.exception.SearchException;
import jaoso.framework.util.JaosoConfig;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import java.io.IOException;
/**
* @author Quake Wang,Edgeloner
* @since 2004-5-23
* @version $Revision: 1.1 $
*
*/
public class IndexStore {
/** DOCUMENT ME! */
private static final Log log = LogFactory.getLog(IndexStore.class);
/** DOCUMENT ME! */
private String indexDir;
private JaosoConfig jaosoConfig;
public void setJaosoConfig(JaosoConfig jaosoConfig) {
this.jaosoConfig = jaosoConfig;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
public IndexReader createReader() throws IOException {
createIndexDirectory(false);
return IndexReader.open(getDirectory(false));
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
public IndexSearcher createSearcher() throws IOException {
createIndexDirectory(false);
return new IndexSearcher(getDirectory(false));
}
/**
* DOCUMENT ME!
*
* @param analyzer
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
public IndexWriter createWriter(Analyzer analyzer)
throws IOException {
createIndexDirectory(false);
return new IndexWriter(getDirectory(false), analyzer, false);
}
/**
* DOCUMENT ME!
*
* @param createIt
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*
* @throws IOException
* DOCUMENT ME!
*/
private Directory getDirectory(boolean createIt) throws IOException {
return FSDirectory.getDirectory(getIndexDir(), createIt);
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
private boolean isIndexCreated() {
boolean created = false;
try {
created = IndexReader.indexExists(getDirectory(false));
} catch (IOException e) {
log.error("Error creating reader: " + e, e);
}
return created;
}
/**
* DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
private String getIndexDir() {
//return "index";
return jaosoConfig.getIndexPath();
}
/**
* DOCUMENT ME!
*
* @param forceCreate
* DOCUMENT ME!
*/
private void createIndexDirectory(boolean forceCreate) {
if (forceCreate || !isIndexCreated()) {
try {
new IndexWriter(getDirectory(true), null, true).close();
} catch (IOException ioe) {
log.error(ioe);
throw new SearchException("Cannot create index directory");
}
}
}
/**
* @param indexDir
* The indexDir to set.
*/
public void setIndexDir(String indexDir) {
this.indexDir = indexDir;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -