⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 indexer.java

📁 cwbbs 云网论坛源码
💻 JAVA
字号:
package com.redmoon.forum.search;import java.io.*;import java.util.*;import cn.js.fan.web.*;import com.cloudwebsoft.framework.util.*;import com.redmoon.forum.*;import com.redmoon.forum.Config;import jeasy.analysis.*;import org.apache.lucene.analysis.*;import org.apache.lucene.document.*;import org.apache.lucene.index.*;import org.apache.lucene.queryParser.*;import org.apache.lucene.search.*;import com.redmoon.forum.person.UserMgr;public class Indexer {    String indexStorageDir;    public Indexer() {        Config cfg = Config.getInstance();        indexStorageDir = Global.realPath + cfg.getProperty("forum.fullTextSearchDir");        File file = new File(indexStorageDir);        if (!file.isDirectory()) {            file.mkdirs();        }    }    public int delDocument(long id) {        int r = -1;        IndexReader reader = null;        try {            reader = IndexReader.open(indexStorageDir);            r = reader.deleteDocuments(new Term("id", "" + id));        } catch (IOException e) {            LogUtil.getLog(getClass()).error("delDocument:" + e.getMessage());        } finally {            try {                reader.close();            } catch (Exception e) {}        }        return r;    }    public boolean index(Vector vt, boolean isIncrement ) {        boolean re = true;        try {            Iterator ir = vt.iterator();            IndexWriter writer = new IndexWriter(indexStorageDir, getAnalyzer(), !isIncrement);            MsgDb md = new MsgDb();            UserMgr um = new UserMgr();            while (ir.hasNext()) {                md = (MsgDb)ir.next();                Document doc = new Document();                doc.add(new Field("id", Long.toString(md.getId()), Field.Store.YES, Field.Index.TOKENIZED));                doc.add(new Field("title", md.getTitle(), Field.Store.YES, Field.Index.TOKENIZED));                doc.add(new Field("content", md.getContent(), Field.Store.YES, Field.Index.TOKENIZED));                String nick = um.getUser(md.getName()).getNick();                if (nick==null)                    nick = "";                doc.add(new Field("nick", nick, Field.Store.YES, Field.Index.TOKENIZED));                writer.addDocument(doc);            }            writer.optimize();            writer.close();        } catch (IOException e) {            LogUtil.getLog(getClass()).error("index:" + e.getMessage());        }        return re;    }    public Analyzer getAnalyzer() {        MMAnalyzer analyzer = new MMAnalyzer(2);        return analyzer;    }    public Hits seacher(String queryString, String fieldName) {        Hits hits = null;        try {            IndexSearcher is = null;            is = new IndexSearcher(indexStorageDir);            QueryParser parser = new QueryParser(fieldName, getAnalyzer());            Query query = parser.parse(queryString);            hits = is.search(query);        } catch (Exception e) {            LogUtil.getLog(getClass()).error("seacher:" + e.getMessage());            System.out.print(e);        }        return hits;    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -