黑马程序员技术交流社区

标题: 【合肥中心】Lucene5.3.1 使用的简单实例 [打印本页]

作者: 项老师    时间: 2018-5-31 11:16
标题: 【合肥中心】Lucene5.3.1 使用的简单实例
【合肥中心】Lucene5.3.1 使用的简单实例
Lucene是一个基于Java的开源全文信息检索工具包。
MyTest.Java
[AppleScript] 纯文本查看 复制代码
public class MyTest {

    /// 存放需要分析的文件的地址
    private static String FILE_PATH = "/Users/zoujs/Desktop/test4lucene";

    // 存放索引的位置
    private static String INDEX_PATH = "/Users/zoujs/Desktop/index4lucene";

    @Test
    public void createIndex() {
        IndexUtils.createIndex(INDEX_PATH, FileUtils.loadFiles(FILE_PATH));
    }

    @Test
    public void searchIndex() {
        SearcherUtils.search(INDEX_PATH, "title", "china");
    }
}  
FileBean.java
[AppleScript] 纯文本查看 复制代码
public class FileBean implements Serializable{

    private String title;
    private String content;
    private int 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;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "FileBean{" +
                "title='" + title + '\'' +
                ", content='" + content + '\'' +
                ", id=" + id +
                '}';
    }
}
IndexUtils.java
[AppleScript] 纯文本查看 复制代码
public class IndexUtils {
  
    public static void createIndex(String indexPath, List<FileBean> files) {
      
        Directory directory = null;
        try {
            if (StringUtils.isBlank(indexPath))
                directory = new RAMDirectory();
            else
                directory = FSDirectory.open(Paths.get(indexPath));

            // 获取分析器
            Analyzer analyzer = new StandardAnalyzer();  //标准分析器

            // IndexWriter的配置
            IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
            indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE); //无索引文件则创建,有则在后面继续添加

            // 创建IndexWriter
            IndexWriter writer = new IndexWriter(directory, indexWriterConfig);

            // 遍历文件Bean创建索引
            for (FileBean bean : files) {
                // 创建Document
                Document doc = new Document();

                // 为Document创建三个字段 id title content
                doc.add(new IntField("id", bean.getId(), IntField.TYPE_STORED));
                doc.add(new Field("title", bean.getTitle(), TextField.TYPE_STORED));
                doc.add(new TextField("content", bean.getContent(), Field.Store.YES));

                // 将Document写入IndexWriter
                writer.addDocument(doc);
            }

            // 提交
            writer.commit();
            writer.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
SearchUtils.java
[AppleScript] 纯文本查看 复制代码
public class SearcherUtils {

    public static void search(String indexPath, String field, String text) {
        try {

            // 索引文件目录
            Directory directory = FSDirectory.open(Paths.get(indexPath));

            // 获取IndexReader
            DirectoryReader reader = DirectoryReader.open(directory);
            IndexSearcher searcher = new IndexSearcher(reader);

            Term term = new Term(field, text);
            Query query = new TermQuery(term);

            TopDocs topDocs = searcher.search(query, 10);
            ScoreDoc[] hits = topDocs.scoreDocs;

            if (null != hits)
                for (int i = 0; i < hits.length; i++) {
                    Document doc = searcher.doc(hits.doc);
                    System.out.println(doc.get("title"));
                }
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}



作者: 奥斯托洛夫斯基    时间: 2018-5-31 15:11

作者: O-limin    时间: 2018-5-31 15:14
666
作者: 美美就是美    时间: 2018-5-31 15:15

作者: hguilin    时间: 2018-5-31 15:15
666
作者: 黑马啸西风    时间: 2018-5-31 15:23

作者: 项老师    时间: 2018-5-31 15:29
6666666
作者: 鸟语花香    时间: 2018-5-31 15:45

作者: Rainy-    时间: 2018-5-31 15:48

作者: 朱浩    时间: 2018-5-31 15:52





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2