2013-04-26期-索引内容修改、删除

来源:互联网 发布:seo盒子 编辑:程序博客网 时间:2024/05/20 03:39

修改mainTest测试类

    public class mainTest {        /**         *  Function:抓取网页内容         *  @author JLC         *  @return         */        public static List<Document>  getWebContentDocuments(){            List<Document> docs = new ArrayList<Document>();            WebContent wc = new WebContent();            Document doc1 = PackContentObject.convertContentToDoc(wc.getContentFromSite("http://news.163.com"));            docs.add(doc1);            Document doc2 = PackContentObject.convertContentToDoc(wc.getContentFromSite("http://news.sohu.com/"));            docs.add(doc2);            return docs;        }        /**         * 创建索引         */        public static void createSearchEngineData(){             SearchEngineCore  se = SearchObject.getInstance().getLuceneContext("search");             List<Document> docList = getWebContentDocuments();             for(Document doc:docList){                 try{                     se.getTw().addDocument(doc);                     se.commitIndex();                     se.refreshData();                     se.getNRTManager().maybeRefresh();                 }catch(Exception e){                     e.printStackTrace();                 }             }        }        public static void main(String args[]){            //创建索引数据            //createSearchEngineData();             //查询索引            //searchContent("网易新闻");            //更新所有title=网易新闻 的索引   如果title=网易新闻 的索引有多条,更新后只会全部删除            Term term = new Term("title","网易新闻");            ContentObject content  =new ContentObject();            content.setTitle("test");            content.setContent("测试内容");            updateContent(term,content);            //删除title=test  的索引            deleteContent("test");        }        /**         * 创建搜索方法         * @param keyWord         */        public static void searchContent(String keyWord){            //List<ContentObject> searcheResult =  new ArrayList<ContentObject>();            try{                /*                Version v = Version.LUCENE_42;                //取得查询对象                IndexReader[] readers =  SearchObject.getInstance().getSearcherReads();                //多域查询                MultiReader mReaders = new MultiReader(readers);                IndexSearcher indexSearch = new  IndexSearcher(mReaders);                 //自带的标准分词                Analyzer analyzer =new StandardAnalyzer(v);                //创建boolean查询                BooleanQuery query = new BooleanQuery();                String[] field = {"title", "content"};                BooleanClause.Occur[] flags = new BooleanClause.Occur[2];                flags[0] = BooleanClause.Occur.SHOULD;                flags[1] = BooleanClause.Occur.SHOULD;                Query query1 = MultiFieldQueryParser.parse(v, QueryParser.escape(keyWord), field, flags, analyzer);                //必须满足该查询条件                query.add(query1, Occur.MUST);                */                //精确查询,TermQuery 里面内容必须完全匹配才能查询到结果                IndexSearcher indexSearch = SearchObject.getInstance().getSearcher("search");                TermQuery  query = new TermQuery(new Term("title","网易新闻"));                //10000为最多查询条数                TopScoreDocCollector topCollector = TopScoreDocCollector.create(10000, true);                indexSearch.search(query, topCollector);                 //取得查询结果                TopDocs topDocs = topCollector.topDocs();                 int resultCount=topDocs.totalHits;                for(int i=0;i<resultCount;i++){                    Document doc = indexSearch.doc(topDocs.scoreDocs[i].doc);                    System.out.println("标题:"+doc.get("title"));                    System.out.println("内容:"+doc.get("content").substring(0,200));                }                System.out.println("查询结果条数:"+resultCount);            }catch(Exception e){                e.printStackTrace();            }        }        /**         * 删除索引内容         */        public static void deleteContent(String title){            try{                 SearchEngineCore  se =  SearchObject.getInstance().getLuceneContext("search");                 se.getTw().deleteDocuments(new Term("title",title));                 se.commitIndex();                 se.refreshData();                 se.getNRTManager().maybeRefresh();             }catch(Exception e){                 e.printStackTrace();             }          }        /**         * 更新索引内容         * @param term  原索引         * @param content  更新的内容         */        public static void updateContent(Term term,ContentObject content ){            try{                SearchEngineCore  se =  SearchObject.getInstance().getLuceneContext("search");                Document doc = PackContentObject.convertContentToDoc(content);                se.getTw().updateDocument(term,doc);                   se.commitIndex();                 se.refreshData();                 se.getNRTManager().maybeRefresh();            }catch(Exception e){                e.printStackTrace();            }        }    }
0 0
原创粉丝点击