posts - 145,comments - 23,views - 73万

1.最基本的创建索引:

 

复制代码
@Test
    public void testIndex(){ 
        try { 
            Directory directory = FSDirectory.open(new File(LUCENE_DIRECTORY)); 
            IndexWriter indexWriter = new IndexWriter(directory,new IndexWriterConfig(Version.LATEST,new StandardAnalyzer())); 
            Document document = new Document(); 
            TextField titleFiled = new TextField("name","jiaoyiping", Field.Store.YES); 
            document.add(titleFiled); 
            indexWriter.addDocument(document); 
            indexWriter.commit(); 
            indexWriter.close(); 
        } catch (Exception e) { 
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates. 
        } 
    }
复制代码

 

 

 

 

 

2.使用FieldType创建索引

 

复制代码
//使用FieldType创建Field(4.X之后才有) 
    @Test
    public  void testCreateIndexUseFieldType(){ 
        try { 
            Directory directory = FSDirectory.open(new File(LUCENE_DIRECTORY)); 
            IndexWriter indexWriter = new IndexWriter(directory,new IndexWriterConfig(Version.LATEST,new StandardAnalyzer())); 
            Document document = new Document(); 
            FieldType titleType = new FieldType(); 
            titleType.setIndexed(true);//索引选项 
            titleType.setStored(true); //存储选项 
            Field field = new Field("title","下班",titleType); 
            TextField titleFiled = new TextField("name","jiaoyiping", Field.Store.YES); 
            document.add(titleFiled); 
            document.add(field); 
            indexWriter.addDocument(document); 
            indexWriter.commit(); 
            indexWriter.close(); 
        } catch (Exception e) { 
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates. 
        } 
    }
复制代码

 

 

 

  

 

搜索示例:

 

复制代码
/** 
    * 搜索示例 
    */
   @Test
   public void  testQuery(){ 
       try { 
           IndexReader indexReader = DirectoryReader.open(FSDirectory.open(new File(LUCENE_DIRECTORY))); 
           IndexSearcher searcher = new IndexSearcher(indexReader); 
           QueryParser queryParser = new QueryParser("title",new StandardAnalyzer()); 
           Query query = queryParser.parse("下班"); 
           ScoreDoc[] docs = searcher.search(query,20).scoreDocs; //命中的数组 
           for(ScoreDoc sd:docs){ 
               int docNumber = sd.doc; 
               System.out.println("文档号: "+docNumber); 
               Document doc = searcher.doc(docNumber);//根据文档号来查询文档 
               System.out.println(doc.get("name")); 
           } 
  
       } catch (Exception e) { 
           e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates. 
       } 
   }
复制代码

 

 

 

 

 

 

 

 

 

posted on   梦中彩虹  阅读(364)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示