lucene实例
基础应用,在保存信息时调用luceneDao中的save方法产生索引,搜索时调用search依据进行查询。
?
?public class SearchUtils {public static IKAnalyzer analyzer;public static Directory directory;static {File file = new File("./indexs/");try {directory = FSDirectory.open(file);analyzer = new IKAnalyzer();} catch (IOException e) {e.printStackTrace(); }}/** * * getIndexWriter:return indexwriter * * @param @return 设定文件 * @return IndexWriter DOM对象 * @throws * @since search1.0 */public static IndexWriter getIndexWriter(){IndexWriter indexWriter = null;try {//字段设置为有限长度indexWriter = new IndexWriter(directory, analyzer, MaxFieldLength.LIMITED);//indexWriter.setMaxFieldLength(100);设置最大长度} catch (Exception e) {e.printStackTrace(); }return indexWriter;}/** * * getIndexSearch:return indexsearcher * * @param @return 设定文件 * @return IndexSearcher DOM对象 * @throws * @since search1.0 */public static IndexSearcher getIndexSearch(){IndexSearcher indexSearcher = null;try {indexSearcher = new IndexSearcher(directory);} catch (Exception e) {e.printStackTrace(); }return indexSearcher;}public static IndexReader getIndexReader(){IndexReader reader = null;try {reader = IndexReader.open(directory);} catch (Exception e) {e.printStackTrace(); }return reader;}/** * * parseToObject:from document to Object * * @param @param document * @param @return 设定文件 * @return Lucene DOM对象 * @throws * @since search1.0 */public static Lucene parseToObject(Document document) {Lucene lucene = new Lucene();lucene.setTitle(document.get("title"));lucene.setUrl(document.get("url"));lucene.setDigest(document.get("digest"));return lucene; }/** * * parseMessageToDocument:parse message to document * * @param @param message * @param @return 设定文件 * @return Document DOM对象 * @throws * @since search1.0 */public static Document parseMessageToDocument(Message message){Document doc = new Document();doc.add(new Field("id", message.getId(), Store.YES, Index.NOT_ANALYZED));doc.add(new Field("title", message.getTitle(), Store.YES, Index.ANALYZED));doc.add(new Field("author", message.getAuthor(), Store.YES, Index.ANALYZED));doc.add(new Field("keywords", message.getKeywords(), Store.YES, Index.ANALYZED));doc.add(new Field("content", message.getContent(), Store.YES, Index.ANALYZED));return doc;}/** * * parseDocumentToMessageBean:parse document to message * * @param @param doc * @param @return 设定文件 * @return MessageBean DOM对象 * @throws * @since search1.0 */public static MessageBean parseDocumentToMessageBean(Document doc){MessageBean messageBean = new MessageBean();messageBean.setId(doc.get("id"));messageBean.setTitle(doc.get("title"));messageBean.setAuthor(doc.get("author"));messageBean.setKeywords(doc.get("keywords"));messageBean.setContent(doc.get("content"));return messageBean;}/** * * unLock:unlock * * @param 设定文件 * @return void DOM对象 * @throws * @since search1.0 */public static void unLock(){try {if (IndexWriter.isLocked(directory)) {IndexWriter.unlock(directory);}} catch (IOException e) {e.printStackTrace(); }}}