国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

增刪改查索引庫

2019-11-08 01:58:59
字體:
來源:轉載
供稿:網友

util

public class LuceneUtil {		PRivate static Directory directory;	private static Version version;	private static Analyzer analyzer;	private static MaxFieldLength maxFieldLength;		static{		try {			directory =  FSDirectory.open(new File("c:/itcast/IndexDBDBDB"));			version = Version.LUCENE_30;			analyzer = new StandardAnalyzer(version);			maxFieldLength = MaxFieldLength.LIMITED;		} catch (Exception e) {			e.printStackTrace();			throw new RuntimeException(e);		}	}		public static Directory getDirectory() {		return directory;	}	public static Version getVersion() {		return version;	}	public static Analyzer getAnalyzer() {		return analyzer;	}	public static MaxFieldLength getMaxFieldLength() {		return maxFieldLength;	}	//不讓外界new該幫助類	private LuceneUtil(){}			//將javaBean轉成Document對象	public static Document javabean2document(Object obj) throws Exception{		//創建Docuemnt對象		Document document = new Document();		//獲取obj引用的對象字節碼		Class clazz = obj.getClass();		//通過對象字節碼獲取私有的屬性		java.lang.reflect.Field[] reflectFields = clazz.getDeclaredFields();		//迭代		for(java.lang.reflect.Field reflectField : reflectFields){			//強力反射			reflectField.setaccessible(true);			//獲取屬性名,id/title/content			String name = reflectField.getName();			//人工拼接方法名			String methodName = "get" + name.substring(0,1).toUpperCase()+name.substring(1);			//獲取方法,例如:getId()/getTitle()/getContent()			Method method = clazz.getMethod(methodName,null);			//執行方法			String value = method.invoke(obj,null).toString();			//加入到Document對象中去,這時javabean的屬性與document對象的屬性相同			document.add(new Field(name,value,Store.YES,Index.ANALYZED));		}		//返回document對象		return document;	}		//將Document對象轉成JavaBean對象	public static Object document2javabean(Document document,Class clazz) throws Exception{		Object obj = clazz.newInstance();		java.lang.reflect.Field[] reflectFields = clazz.getDeclaredFields();		for(java.lang.reflect.Field reflectField : reflectFields){			reflectField.setAccessible(true);			String name = reflectField.getName();//id/title/content			String value = document.get(name);//1/培訓/傳智是一家培訓機構			BeanUtils.setProperty(obj,name,value);//封裝javabean對應的屬性中去,通過setXxx()方法		}		return obj;	}curd

public class ArticleDao {	@Test	public void add() throws Exception{		Article article = new Article(1,"培訓","中大是一家java培訓機構");		Document document = LuceneUtil.javabean2document(article);		IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());		indexWriter.addDocument(document);//核心		indexWriter.close();	}	@Test	public void addAll() throws Exception{		IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());				Article article1 = new Article(1,"培訓","火星是一家java培訓機構");		Document document1 = LuceneUtil.javabean2document(article1);		indexWriter.addDocument(document1);				Article article2 = new Article(2,"培訓","水星是一家net培訓機構");		Document document2 = LuceneUtil.javabean2document(article2);		indexWriter.addDocument(document2);				Article article3 = new Article(3,"培訓","金星是一家php培訓機構");		Document document3 = LuceneUtil.javabean2document(article3);		indexWriter.addDocument(document3);				Article article4 = new Article(4,"培訓","土星是一家ios培訓機構");		Document document4 = LuceneUtil.javabean2document(article4);		indexWriter.addDocument(document4);				Article article5 = new Article(5,"培訓","木星是一家ui培訓機構");		Document document5 = LuceneUtil.javabean2document(article5);		indexWriter.addDocument(document5);				Article article6 = new Article(6,"培訓","天王星是一家c++培訓機構");		Document document6 = LuceneUtil.javabean2document(article6);		indexWriter.addDocument(document6);				Article article7 = new Article(7,"培訓","海王星是一家SEO培訓機構");		Document document7 = LuceneUtil.javabean2document(article7);		indexWriter.addDocument(document7);				indexWriter.close();	}	@Test	public void update() throws Exception{		Article newArticle = new Article(1,"培訓","冥王星是一家JAVA培訓機構");		Document document = LuceneUtil.javabean2document(newArticle);		IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());		//更新id=7的document對象		/*		 * 參數一:term表示需要更新的document對象,id表示document對象中的id屬性,7表示該id屬性的值		 * 參數二:新的document對象		 */		indexWriter.updateDocument(new Term("id","1"),document);//核心		indexWriter.close();	}	@Test	public void delete() throws Exception{		IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());		indexWriter.deleteDocuments(new Term("id","2"));//核心		indexWriter.close();	}	@Test	public void deleteAll() throws Exception{		IndexWriter indexWriter = new IndexWriter(LuceneUtil.getDirectory(),LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());		indexWriter.deleteAll();//核心 		indexWriter.close();	}					@Test	public void findAllByKeyWords() throws Exception{		String keywords = "培";		List<Article> articleList = new ArrayList<Article>();		QueryParser queryParser = new QueryParser(LuceneUtil.getVersion(),"content",LuceneUtil.getAnalyzer());		Query query = queryParser.parse(keywords);		IndexSearcher indexSearcher = new IndexSearcher(LuceneUtil.getDirectory());		TopDocs topDocs = indexSearcher.search(query,100);//核心		for(int i=0;i<topDocs.scoreDocs.length;i++){			ScoreDoc scoreDoc = topDocs.scoreDocs[i];			int no = scoreDoc.doc;			Document document = indexSearcher.doc(no);			Article article = (Article)LuceneUtil.document2javabean(document,Article.class);			articleList.add(article);		}		for(Article a : articleList){			System.out.println( a );		}	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桦南县| 安化县| 当阳市| 瓦房店市| 湘潭县| 都匀市| 利津县| 嘉义县| 漠河县| 阿尔山市| 綦江县| 波密县| 海淀区| 顺平县| 保山市| 黑水县| 上林县| 会泽县| 台安县| 湘阴县| 罗城| 济宁市| 吉木萨尔县| 株洲市| 延川县| 库伦旗| 湘乡市| 项城市| 南木林县| 察隅县| 黑水县| 永定县| 高安市| 上栗县| 双江| 长海县| 新泰市| 唐河县| 正宁县| 二连浩特市| 雷州市|