Lucene-HelloWorld

来源:互联网 发布:超市起名软件 编辑:程序博客网 时间:2024/06/14 03:06

1.1        准备lucene的开发环境

  搭建lucene的开发环境,要准备lucene的jar包,要加入的jar包至少有:

1)    lucene-core-3.1.0.jar     (核心包)

2)    lucene-analyzers-3.1.0.jar    (分词器)

3)    lucene-highlighter-3.1.0.jar    (高亮器)

4)    lucene-memory-3.1.0.jar       (高亮器)





public class Article {private Long id;private String title;private String content;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}

@Testpublic void testCreateIndex() throws Exception{/** * 1、创建一个article对象,并且把信息存放进去 * 2、调用indexWriter的API把数据存放在索引库中 * 3、关闭indexWriter *///创建一个article对象,并且把信息存放进去Article article = new  Article();article.setId(1L);article.setTitle("lucene可以做搜索引擎");article.setContent("baidu,google都是很好的搜索引擎");//调用indexWriter的API把数据存放在索引库中   /**    * 创建一个IndexWriter    *    参数三个    *       1、索引库   指向索引库的位置    *       2、分词器    */       //创建索引库   Directory directory = FSDirectory.open(new File("./indexDir"));   //创建分词器   Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);IndexWriter indexWriter = new IndexWriter(directory, analyzer, MaxFieldLength.LIMITED);  //把一个article对象转化成documentDocument document = new Document();Field idField = new Field("id",article.getId().toString(),Store.YES,Index.NOT_ANALYZED);Field titleField = new Field("title",article.getTitle(),Store.YES,Index.ANALYZED);Field contentField = new Field("content",article.getContent(),Store.YES,Index.ANALYZED);document.add(idField);document.add(titleField);document.add(contentField);indexWriter.addDocument(document);//关闭indexWriterindexWriter.close();}

@Testpublic void testSearchIndex() throws Exception{/** * 1、创建一个 IndexSearch对象 * 2、调用search方法进行检索 * 3、输出内容 *///创建一个 IndexSearch对象Directory directory = FSDirectory.open(new File("./indexDir"));IndexSearcher indexSearcher = new IndexSearcher(directory);//调用search方法进行检索Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);QueryParser queryParser = new QueryParser(Version.LUCENE_30,"content",analyzer);Query query = queryParser.parse("baidu");//关键词TopDocs topDocs = indexSearcher.search(query, 2);int count = topDocs.totalHits;//根据关键词查询出来的总的记录数ScoreDoc[] scoreDocs = topDocs.scoreDocs;List<Article> articleList = new ArrayList<Article>();for(ScoreDoc scoreDoc:scoreDocs){float score = scoreDoc.score;//关键词得分int index = scoreDoc.doc;//索引的下标Document document = indexSearcher.doc(index);//把document转化成articleArticle article = new  Article();article.setId(Long.parseLong(document.get("id")));//document.getField("id").stringValue()article.setTitle(document.get("title"));article.setContent(document.get("content"));articleList.add(article);}for(Article article:articleList){System.out.println(article.getId());System.out.println(article.getTitle());System.out.println(article.getContent());}}

如何把一个信息写到索引库中


读取信息的过程




0 0
原创粉丝点击