📄 indexstore.java
字号:
package jaoso.framework.core.search.lucene;
import jaoso.framework.exception.SearchException;
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.File;
import java.io.IOException;
/**
* @author Quake Wang
* @since 2004-5-23
* @version $Revision: 1.1 $
*
**/
public class IndexStore {
//~ Static fields/initializers =============================================
/** DOCUMENT ME! */
private static final Log log = LogFactory.getLog(IndexStore.class);
//~ Instance fields ========================================================
/** DOCUMENT ME! */
private String indexDir;
//~ Constructors ===========================================================
/**
* Creates a new IndexStore object.
*/
public IndexStore() {
init();
}
//~ Methods ================================================================
/**
* 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 this.indexDir;
}
/**
* 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");
}
}
}
/**
* 初始化,如果索引目录没有建立则建立之
*/
private void init() {
if (indexDir == null) {
String path = IndexStore.class.getResource("/")
.getPath()
.substring(1);
path = path.substring(0, path.indexOf("classes")) + "index";
this.indexDir = path;
}
File f = new File(this.indexDir);
if (!f.exists()) {
f.mkdirs();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -