lucene 简单实现

lucene 简单实现


public class TestLucene {

/** * * 使用indexWriter 对数据建立索引.. * @throws IOException */ @Test public void testCreateIndex() throws IOException{ //索引存放的位置.... 1 Directory directory=FSDirectory.open(new File("indexDir/")); //lucene 当前使用的匹配版本... 2 Version matchVersion=Version.LUCENE_44; //分词器 (对文本进行分词...) //我是中国人 //也是醉了,正能量,逗比,带你装b带你飞 3 Analyzer analyzer=new StandardAnalyzer(matchVersion); //索引写入的配置... 4 IndexWriterConfig writerConfig=new IndexWriterConfig(matchVersion, analyzer); //构建用于操作索引的类 5 IndexWriter indexWriter=new IndexWriter(directory, writerConfig); //通过indexWriter 来创建索引... //索引库里面的要遵守一定的结构,(索引结构...) document Document doc=new Document(); //索引document 里面也有很多的字段.. /** * 1:字段的名称 * 2:字段对应的值 * 3:该字段在索引库当中是否存储... * * 这里耦合度较高因为把初始化和给索引库和索引文件值写在一个方法里 */ IndexableField field=new IntField("id", 1, Store.YES); IndexableField title=new StringField("title", "你们都是大神", Store.YES); IndexableField content=new TextField("content", "做最好的自己,时刻保持恐惧感",Store.YES); doc.add(field); doc.add(title); doc.add(content); indexWriter.addDocument(doc); indexWriter.close(); } /** * 使用indexSearcher 对数据进行搜索... * @throws IOException * * */ @Test public void testSearcher() throws IOException{ //索引存放的位置.... Directory directory=FSDirectory.open(new File("indexDir/")); IndexReader indexReader=DirectoryReader.open(directory); //通过indexSearcher 去检索索引目录... IndexSearcher indexSearcher=new IndexSearcher(indexReader); //我们以后只要根据索引查找,整个过程肯定要分两次.. //这个是一个搜索条件..,通过定义条件来进行查找... //term 我需要根据那个字段进行检索,字段对应的值... /* 此处耦合度较高,初始化和搜索以及结果遍历写在了一起 */ Query query=new TermQuery(new Term("title","大神")); //搜索先搜索索引目录.. //找到符合query 条件的前面N条记录... TopDocs topDocs=indexSearcher.search(query,100); System.out.println("总记录数==="+topDocs.totalHits); ScoreDoc scoreDocs[]=topDocs.scoreDocs; //返回一个击中.. for(ScoreDoc scoreDoc:scoreDocs){ int docID=scoreDoc.doc; Document document=indexSearcher.doc(docID); System.out.println(document.get("id")); System.out.println(document.get("title")); System.out.println(document.get("content")); } }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lucene是一个开源的全文搜索引擎库,它提供了丰富的搜索功能和高效的索引技术。二分法分词是Lucene中的一种分词算法,用于将文本按照词语进行切分。 在Java中实现Lucene的二分法分词可以通过以下步骤: 1. 导入Lucene库:首先需要在Java项目中导入Lucene的相关库文件,可以通过Maven或手动下载添加到项目中。 2. 创建Analyzer对象:Analyzer是Lucene中的分析器,用于对文本进行分词处理。对于二分法分词,可以使用StandardAnalyzer或CJKAnalyzer。 3. 创建TokenStream对象:TokenStream是Lucene中的流式分词器,用于逐个获取文本中的词语。可以通过Analyzer的tokenStream方法创建TokenStream对象。 4. 获取词语:通过TokenStream对象的incrementToken方法逐个获取文本中的词语,并进行相应的处理操作。 下面是一个简单的示例代码: ```java import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.analysis.tokenattributes.CharTermAttribute; public class LuceneTokenizerExample { public static void main(String[] args) { String text = "Lucene是一个开源的全文搜索引擎库"; // 创建Analyzer对象 Analyzer analyzer = new StandardAnalyzer(); try { // 创建TokenStream对象 TokenStream tokenStream = analyzer.tokenStream(null, text); // 获取词语 CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class); tokenStream.reset(); while (tokenStream.incrementToken()) { String term = charTermAttribute.toString(); System.out.println(term); } tokenStream.end(); tokenStream.close(); } catch (Exception e) { e.printStackTrace(); } finally { analyzer.close(); } } } ``` 运行以上代码,将输出以下结果: ``` Lucene 是 一个 开源 的 全文 搜索 引擎 库 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值