lucene maven配置

lucene maven配置
https://blog.csdn.net/slslslyxz/article/details/105446139

package org.zjs.lucene;
import org.apache.lucene.document.Field;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Paths;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.LongPoint;
import org.apache.lucene.document.NumericDocValuesField;
import org.apache.lucene.document.StoredField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.wltea.analyzer.lucene.IKAnalyzer;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args ) throws IOException, ParseException
    {
         //1 创建文档对象
        Document document = new Document();
        // 创建并添加字段信息。参数:字段的名称、字段的值、是否存储,这里选Store.YES代表存储到文档列表。Store.NO代表不存储
        //由于 6x版本以后 IntField LongField都没了
        document.add(new LongPoint("id", 1));//可以用来范围搜索
        document.add(new NumericDocValuesField("id", 1));//可以用来sort排序
        document.add(new StoredField("id", 1));//单纯用来获得ID值
        document.add(new StringField("tag", "小道消息", Field.Store.YES));
        // 这里我们title字段需要用TextField,即创建索引又会被分词。StringField会创建索引,但是不会被分词
        document.add(new TextField("title", "谷歌突然宕机三小时", Field.Store.YES));

        //2 索引目录类,指定索引在硬盘中的位置
        //新版本不是给File对象,需要传一个Path对象
        Directory directory = FSDirectory.open(Paths.get("D:\\indexTestDir\\"));
        //如果不想存储在硬盘可以使用RAM存储。Directory directory=new RAMDirectory();
        
        //3 创建分词器对象
        //标准分词器,并不合适中文分词,因此一般我们会用第三方提供的分词器:(比如 ChineseAnalyzer CollationAnalyzer等等,不过ChineseAnalyzer已经废弃了),这里使用的是IK分词器
        Analyzer analyzer = new IKAnalyzer();
        
        //4 索引写出工具的配置对象
        IndexWriterConfig conf = new IndexWriterConfig(analyzer);
        conf.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND); 
        
        //5 创建索引的写出工具类。参数:索引的目录和配置信息
        IndexWriter indexWriter = new IndexWriter(directory, conf);
        
        //6 把文档交给IndexWriter
        indexWriter.addDocument(document);
        //7 提交
        indexWriter.commit();
        //8 关闭
        indexWriter.close();
        
        
        
        
        
        
        
        
        
        
        // 索引目录对象
        Directory directory1 = FSDirectory.open(Paths.get("D:\\indexTestDir\\"));
        // 索引读取工具
        IndexReader reader = DirectoryReader.open(directory1);
        // 索引搜索工具
        IndexSearcher searcher = new IndexSearcher(reader);

        // 创建查询解析器,两个参数:默认要查询的字段的名称,分词器
        QueryParser parser = new QueryParser("title", new IKAnalyzer());
        //如果想同时匹配多个
        //QueryParser parser = new MultiFieldQueryParser(new String[]{"field1", "field2"}, new IKAnalyzer());

        // 创建查询对象
        Query query = parser.parse("谷歌");

        // 搜索数据,两个参数:查询条件对象要查询的最大结果条数
        // 返回的结果是 按照匹配度排名得分前N名的文档信息(包含查询到的总条数信息、所有符合条件的文档的编号信息)。
        TopDocs topDocs = searcher.search(query, 10);
        // 获取总条数
        System.out.println("本次搜索共找到" + topDocs.totalHits + "条数据");
        // 获取得分文档对象(ScoreDoc)数组.SocreDoc中包含:文档的编号、文档的得分
        ScoreDoc[] scoreDocs = topDocs.scoreDocs;
        for (ScoreDoc scoreDoc : scoreDocs) {
            // 取出文档编号
            int docID = scoreDoc.doc;
            // 根据编号去找文档
            Document doc = reader.document(docID);
            System.out.println("id: " + doc.get("id"));
            System.out.println("tag: " + doc.get("tag"));
            System.out.println("title: " + doc.get("title"));
            // 取出文档得分
            System.out.println("得分: " + scoreDoc.score);
        }
    }
}


<?xml version="1.0"?>
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    4.0.0
    
        com.zjs
        springcloud
        0.0.1-SNAPSHOT
    
    com.zjs
    zjs-lucene
    0.0.1-SNAPSHOT
    zjs-lucene
    http://maven.apache.org
    
        UTF-8
        8.5.0
    
    
        
        
            org.apache.lucene
            lucene-core
            ${lunece.version}
        
        
        
            org.apache.lucene
            lucene-queryparser
            ${lunece.version}
        
        
        
            org.apache.lucene
            lucene-analyzers-common
            ${lunece.version}
        
        
        
            com.jianggujin
            IKAnalyzer-lucene
            8.0.0
        
        
            junit
            junit
            3.8.1
            test
        
    


Java中使用Redis
https://blog.csdn.net/zspppppp/article/details/84847323

https://www.runoob.com/redis/redis-java.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值