博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lucene 入门
阅读量:6683 次
发布时间:2019-06-25

本文共 2752 字,大约阅读时间需要 9 分钟。

  hot3.png

public void index() {    //1.创建Directory    Directory directory = null;    Analyzer analyzer = null;    IndexWriterConfig iwc = null;    IndexWriter writer = null ;    try {        //Directory directory = new RAMDirectory();//建立在内存中        directory = FSDirectory.open(Paths.get("L:/java/study/lucenc1/src/main/resources/example/index01"));//建立在硬盘上        //2. 创建IndexWriter        analyzer = new StandardAnalyzer();          iwc = new IndexWriterConfig(analyzer);        writer = new IndexWriter(directory, iwc);        //3.创建Document对象        Document d = null;        //4. 位Document 添加Field        File f= new File("L:/java/study/lucenc1/src/main/resources/example/lucene");        for(File file : f.listFiles()){            d = new Document();            d.add(new TextField("content",new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))));            d.add(new StringField("filename", file.getName(),Field.Store.YES));            d.add(new StringField("path", file.toString(), Field.Store.YES) );            writer.addDocument(d);        }    } catch (IOException e) {    e.printStackTrace();    } finally{        if(writer != null){        try {            writer.close();        } catch (IOException e) {            e.printStackTrace();        }    }    }}
public void searcher(){    Directory directory = null;    IndexReader reader = null;     IndexSearcher searcher = null;    Analyzer analyzer = null;    QueryParser parser = null;    try {        //1.创建Directory        directory = FSDirectory.open(Paths.get("L:/java/study/lucenc1/src/main/resources/example/index01"));        //2.创建IndexReader        reader = DirectoryReader.open(directory);        //3.根据IndexReader创建IndexSearcher        searcher = new IndexSearcher(reader);        //4.创建搜索的Query        //创建parser来确定要搜索文件的内容,第二个参数表示搜索的域        analyzer = new StandardAnalyzer();        parser = new QueryParser("content", analyzer);        //创建query,表示搜索域为content中包含java的文档        Query query = parser.parse("linux");        //5.根据searcher搜索并且返回TopDoces        TopDocs tds = searcher.search(query, 10);//10  搜索的条数        //6.根据topDocs获取scoreDoc对象        ScoreDoc[] sds = tds.scoreDocs;        for(ScoreDoc sd : sds){            //7.根据searcher和scoreDoc对象获取具体的Document对象            Document d = searcher.doc(sd.doc);            //8.根据Document对象获取需要的值            System.out.println(d.get("filename")+"["+d.get("path")+"]");        }    //9.关闭reader    } catch (IOException e) {        e.printStackTrace();    } catch (ParseException e) {        e.printStackTrace();    } finally{        if(reader != null) {    try {        reader.close();    } catch (IOException e) {        e.printStackTrace();    }}}}

转载于:https://my.oschina.net/zvc/blog/624954

你可能感兴趣的文章
PHP常见的加密技术
查看>>
Asp.net读取AD域信息的方法(一)
查看>>
两道题学习动态规划
查看>>
mysql实战31 | 误删数据后除了跑路,还能怎么办?
查看>>
ASP.NET MVC Razor
查看>>
Subscribe的第四个参数用法
查看>>
零值比较--BOOL,int,float,指针变量与零值比较的if语句
查看>>
vue-cli的项目加入骨架屏
查看>>
c#获取电脑硬件信息参数说明(硬盘篇 Win32_DiskDrive)
查看>>
3.SOAP和WSDL的一些必要知识
查看>>
使用element中的table组件,如何单击某一行数据时选中对应的复选框
查看>>
饿了么预点单是不是营业时间开始后5分钟内不接单,订单就自动取消
查看>>
1.3 简单的操作符
查看>>
13机器学习实战之PCA(1)
查看>>
tf.argmax()以及axis解析
查看>>
android使用Pull解析来自服务器的xml文件时出现错误以及解决方案
查看>>
C#_delegate - 调用列表 计算阶乘
查看>>
xib下这种方式创建cell
查看>>
BZOJ2940 条纹
查看>>
Scala入门教程---《chang哥教你一天搞定Scala》
查看>>