lucnen 中文分词器 和 删除 和修改词库

导入jar包

package com.bw.lucene;

import java.nio.file.Paths;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.LongPoint;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
import org.wltea.analyzer.lucene.IKAnalyzer;

public class WriteDocument {
    static String path = "E://lucene";

    public static void main(String[] args) throws Exception {
        // writeDoc();
        //deleteDocById();
        update();
        queryAll();
        // System.out.println("删除以后");
    }

    public static void queryParser() throws Exception {
        FSDirectory directory = FSDirectory.open(Paths.get(path));
        DirectoryReader reader = DirectoryReader.open(directory);
        IndexSearcher searcher = new IndexSearcher(reader);

        Analyzer analyzer = new IKAnalyzer(true);
        QueryParser parser = new QueryParser("content", analyzer);
        Query query = parser.parse("大数据");
        TopDocs search = searcher.search(query, 10);
        ScoreDoc[] scoreDocs = search.scoreDocs;
        for (ScoreDoc scoreDoc : scoreDocs) {
            int docID = scoreDoc.doc;
            Document doc = searcher.doc(docID);
            System.out.println(Artical.toAritical(doc));
        }
    }

    public static void writeDoc() throws Exception {
        FSDirectory directory = FSDirectory.open(Paths.get(path));
        // 使用中文分词器 开启smart模式 智能模式
        Analyzer analyzer = new IKAnalyzer(true);
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        IndexWriter writer = new IndexWriter(directory, config);
        Artical art = new Artical();
        art.setAuthor("海员");
        art.setContent("大数据那家强,北京找北网 学不会报销往返路费 学会后在交费");
        art.setId(129L);
        art.setTitle("招生简章");
        art.setUrl("www.txstory.com");
        writer.addDocument(art.toDocument());
        writer.close();
    }

    // 修改
    public static void update() throws Exception {
        FSDirectory directory = FSDirectory.open(Paths.get(path));
        // 使用中文分词器 开启smart模式 智能模式
        Analyzer analyzer = new IKAnalyzer(true);
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        IndexWriter writer = new IndexWriter(directory, config);
        Artical artical = new Artical();
        artical.setAuthor("海员");
        artical.setContent("大学生班开班了");
        artical.setId(130L);
        artical.setTitle("招生简章");
        artical.setUrl("www.txstory.com"); 

        writer.updateDocument(new Term("author","海员"),artical.toDocument());
        writer.commit();
        writer.close();

    }

    // 删除

    // 根据id删除
    public static void deleteDocById() throws Exception {
        FSDirectory directory = FSDirectory.open(Paths.get(path));
        // 使用中文分词器 开启smart模式 智能模式
        Analyzer analyzer = new IKAnalyzer(true);
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        IndexWriter writer = new IndexWriter(directory, config);
        // Query query = LongPoint.newRangeQuery("id", 126, 128);// 都删掉 126到128 包括他们都删掉
        Query query = LongPoint.newExactQuery("id", 129);// 单个删除 129
        writer.deleteDocuments(query);
        writer.commit();
        writer.close();
    }

    // 对数据的删除要用到write对象 根据词条删除
    public static void deleteDoc() throws Exception {
        FSDirectory directory = FSDirectory.open(Paths.get(path));
        // 使用中文分词器 开启smart模式 智能模式
        Analyzer analyzer = new IKAnalyzer(true);
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        IndexWriter writer = new IndexWriter(directory, config);
        QueryParser parser = new QueryParser("title", analyzer);
        Query query = parser.parse("招生");
        writer.deleteDocuments(query);
        writer.commit();
        writer.close();
    }

    // 查询所有
    public static void queryAll() throws Exception {
        FSDirectory directory = FSDirectory.open(Paths.get(path));
        DirectoryReader reader = DirectoryReader.open(directory);
        IndexSearcher searcher = new IndexSearcher(reader);
        Query query = new MatchAllDocsQuery();
        TopDocs search = searcher.search(query, 10);
        ScoreDoc[] scoreDocs = search.scoreDocs;
        for (ScoreDoc scoreDoc : scoreDocs) {
            int docID = scoreDoc.doc;
            Document doc = searcher.doc(docID);
            System.out.println(Artical.toAritical(doc));
        }
    }
}

原文地址:https://www.cnblogs.com/JBLi/p/10903714.html

时间: 2024-10-14 04:09:16

lucnen 中文分词器 和 删除 和修改词库的相关文章

Elasticsearch之中文分词器插件es-ik的自定义词库

它在哪里呢? 非常重要! [[email protected] custom]$ pwd/home/hadoop/app/elasticsearch-2.4.3/plugins/ik/config/custom[[email protected] custom]$ lltotal 5252-rw-r--r--. 1 hadoop hadoop 156 Dec 14 10:34 ext_stopword.dic-rw-r--r--. 1 hadoop hadoop 130 Dec 14 10:34

30.IK分词器配置文件讲解以及自定义词库

主要知识点: 知道IK默认的配置文件信息 自定义词库 一.ik配置文件 ik配置文件地址:es/plugins/ik/config目录 IKAnalyzer.cfg.xml:用来配置自定义词库 main.dic:ik原生内置的中文词库,总共有27万多条,只要是这些单词,都会被分在一起 quantifier.dic:放了一些单位相关的词 suffix.dic:放了一些后缀 surname.dic:中国的姓氏 stopword.dic:英文停用词 ik原生最重要的两个配置文件 main.dic:包含

Elasticsearch之中文分词器插件es-ik的热更新词库

前提 Elasticsearch之中文分词器插件es-ik的自定义词库 先声明,热更新词库,需要用到,web项目和Tomcat.不会的,请移步 Eclipse下Maven新建项目.自动打依赖jar包(包含普通项目和Web项目) Tomcat *的安装和运行(绿色版和安装版都适用) Tomcat的配置文件详解 1: 部署 http 服务在这使用 tomcat7 作为 web 容器, 先下载一个 tomcat7, 然后上传到某一台服务器上(192.168.80.10).再执行以下命令 tar -zx

Solr6.6.0添加IK中文分词器

IK分词器就是一款中国人开发的,扩展性很好的中文分词器,它支持扩展词库,可以自己定制分词项,这对中文分词无疑是友好的. jar包下载链接:http://pan.baidu.com/s/1o85I15o 密码:p82g下载好之后,将IK对应的jar复制到项目的D:\tomcat\webapps\solr\WEB-INF\lib下面,然后在WEB-INF下面创建一个classes的目录,将其余三个文件(IKAnalyzer.cfg.xml , ext.dic和stopword.dic)复制到这个cl

ElasticSearch速学 - IK中文分词器远程字典设置

前面已经对"IK中文分词器"有了简单的了解:  但是可以发现不是对所有的词都能很好的区分,比如:  逼格这个词就没有分出来. 词库 实际上IK分词器也是根据一些词库来进行分词的,我们可以丰富这个词库. IK分词器(IK Analysis for Elasticsearch)给了我们一个基本的配置: https://github.com/medcl/elasticsearch-analysis-ik  修改我们es实例中ik插件的配置: cd elasticsearch-5.3.0/pl

ES ik中文分词器的安装

ik分词是一款流行的elasticsearch 中文分词器,安装ik分词器版本一定要与所安装es版本一致. 安装步骤: 1.解压ik分词器安装包到plugin目录下,并删除压缩包. 2.重启elasticsearch进程即可. 3.如果是es集群的话,每台es都需要安装ik分词器. 测试: Curl "http://ES_IP:9200/_analyze?analyzer=ik_smart&pretty=true&text=%E6%88%91%E6%98%AF%E4%B8%AD%

Solr4.10与tomcat整合并安装中文分词器

1.solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引.搜索性能进行了优化. Solr可以从Solr官方网站(http://lucene.apache.org/solr/ )下载,解压后目录如下: bin:solr的运行脚本 contrib:solr的一些贡献软件/插件,用于增强solr的功能. dist:该目录包含build过程中产生的war和jar文

solr中文分词器IK-analyzer安装

solr本身对中文是不支持的,所以需要下载中文分词器IK-analyzer  下载地址https://code.google.com/archive/p/ik-analyzer/downloads.自己本地系统是centos6.7,所以下载了https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ik-analyzer/IK%20Analyzer%202012FF_hf1.zip 安装步骤:

Solr配置中文分词器IKAnalyzer及增删改查调用

一.配置IKAnalyzer中文分词器 Solr 版本5.2.1 IKAnalyzer2012_u6.jar报错 ,用IKAnalyzer2012_FF_hf1.jar 替换可解决 解决lucene4.0与IKAnalyzer的冲突.解决Exception in thread "main" java.lang.VerifyError: class org.wltea.analyzer.lucene.IKAnalyzer overrides final method tokenStrea