lucene创建搜索

@Configuration
@Component
@Log4j2
public class LuceneSearch {
  
  /**
   * 创建搜索
   * @throws Exception
   */
  public  void  search() throws  Exception{

    // 1. 创建  Directory  告知在哪里进行搜索
    Directory  directory = FSDirectory.open(new File("E:/lucene/index01"));  // 创建在硬盘中
    // 2. 创建 IndexReader
    try {
      IndexReader indexReader = IndexReader.open(directory);
      //3.根据 IndexReader 创建 IndexSearch
      IndexSearcher indexSearcher = new IndexSearcher(indexReader);
      // 4. 创建 搜索的
      // 创建 queryParser
      Analyzer analyzer =new StandardAnalyzer(Version.LUCENE_35);// 分词器
      String f  ="content" ; // 声明一个 f 表示的是 要 搜索的搜索域为content
      QueryParser queryParser =new QueryParser(Version.LUCENE_35,f,analyzer);
      String  Strquery  = "java";
      // 创建搜索的内容包含 什么的
      Query query =queryParser.parse(Strquery);  // 表示搜索的搜索域为content中包含风筝误的文档
      // 5. 根据 indexSearcher 搜索并返回 TopDocs  10: 表示显示10      TopDocs topDocs=indexSearcher.search(query,10);
      // 6.根据topDocs 获取scoreDocs 对象
      ScoreDoc[] scoreDocs=topDocs.scoreDocs;
      // 遍历
         for (ScoreDoc scoreDoc :scoreDocs){
             // 7.根据  indexSearcher  scoreDocs 获取  Document
            Document document= indexSearcher.doc(scoreDoc.doc);
            // 8. 根据 Document 获取需要的值
           String content= document.get("content");
           String path = document.get("path");
           String filename=document.get("filename");
           log.info("文档的id------>"+scoreDoc.doc);
           log.info("获取的文件名称是:"+filename+"-------->【它所在的位置在:+"+path+"+"+"+其内容是:--------------------------->"+content);
           log.info("<---------------------------------获取的文件名称是:"+filename+"-------->【它所在的位置在:+"+path+"+"+"+其内容是");
         }
      // 9.关闭
      indexReader.close();
    }catch (Exception e){
       e.printStackTrace();
    }finally {
      try {

      }catch (Exception e){
        e.printStackTrace();
      }
    }
  }
}
 
 
@RunWith(SpringRunner.class)
@SpringBootTest
public class LuceneSearchTests {

    @Autowired
   private LuceneIndex luceneIndex;


    @Autowired
    private LuceneSearch luceneSearch;


  /**
   * 测试创建索引
   */
    @Test
    public  void  CreateSearchTest() throws Exception{
      luceneSearch.search();
    }



}

猜你喜欢

转载自blog.csdn.net/zhaihuilin0986/article/details/80089706