// if(hasNew)
// {
// writer.deleteAll();
// }
//纠结一个问题,为啥这行不注释就不能正常运行呢
package Java.se.lucene;
import java.io.File;
import java.io.IOException;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
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.store.LockObtainFailedException;
//import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.Version;
import org.wltea.analyzer.lucene.IKAnalyzer;
import org.wltea.analyzer.lucene.IKQueryParser;
import org.wltea.analyzer.lucene.IKSimilarity;
public class Searcher {
//创建IK分词器
Analyzer analyzer =new IKAnalyzer();
private static Directory directory=null;
private static String text = "IK Analyzer是一个结合词典分词和文法分词的中文分词开源工具包。" +
"它使用了全新的正向迭代最细粒度切分算法。";
private static IndexReader reader=null;
public Searcher()
{
try {
directory= FSDirectory.open(new File("f:/lucene/Index06/"));
} catch (IOException e) {
e.printStackTrace();
}
// directory= new RAMDirectory();
}
public void index(boolean hasNew)
{
IndexWriter writer=null;
try {
writer=new IndexWriter(directory,new IndexWriterConfig(Version
.LUCENE_36,analyzer));
// if(hasNew)
// {
// writer.deleteAll();
// }
Document doc=null;
doc=new Document();
doc.add(new Field("content", text, Field.Store.YES,Field.Index.ANALYZED) );
writer.addDocument(doc);
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally
{
if(writer!=null)
{
try {
writer.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void search(String query)
{
try {
reader=IndexReader.open(directory);
IndexSearcher searcher=new IndexSearcher(reader);
//在索引中使用IkSimilarity似度评估器
searcher.setSimilarity(new IKSimilarity());
//使用IKQueryParse查询分析器创建Query对象,搜索域为content
Query q=IKQueryParser.parse("content",query);
//搜索相关度最高的五条记录
TopDocs tds=searcher.search(q,10);
ScoreDoc[] sd=tds.scoreDocs;
System.out.println(tds.totalHits);
for(int i=0;i<tds.totalHits;i++){
System.out.println("sduyfusfuah");
Document document=searcher.doc(sd[i].doc);
System.out.println(document.toString());
}
searcher.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void check() throws IOException{ //检查索引是否被正确建立(打印索引)
//Directory directory = FSDirectory.open(new File("f:/lucene/Index06/"));//创建directory,其储存方式为在
IndexReader reader = IndexReader.open(directory);
System.out.println(reader.numDocs());
for(int i = 0;i<reader.numDocs();i++){
System.out.println(reader.document(i));
}
reader.close();
}
public static void main(String[] args) throws IOException {
new Searcher().check();
}
}
package Java.se.lucene;
import org.junit.Before;
import org.junit.Test;
public class Test_Analyzer{
private static Searcher ps=null;
@Before
public void init()
{
ps=new Searcher();
}
@Test
public void test_index()
{
ps.index(true);
}
@Test
public void test_search01()
{
ps.search("中文");
System.out.println("---------------------------");
}
}
相关推荐
Elasticsearch配置IK分词器-扩展词库和热更新
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Java分词器比较(ansj、hanlp、ik)
Ansj和hanlp均基于自然处理语言,分词准确度高,活跃度来讲hanlp略胜一筹。
高版本Lucene的IK分词器
maven库中现有的ik分词器只支持低版本的Lucene,想要支持高版本的Lucene,需要重写老版本ik分词器里的部分代码. 下载代码片段后导入项目,在创建分词器的时候把new IKAnalyzer替换为 new IKAnalyzer5x即可。
linux安装Kibana容器
Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。 Kibana 可以使大数据通俗易懂。它很简单,基于浏览器的界面便于您快速创建和分享动态数据仪表板来追...
lucene+中文IK分词器 例子
lucene3.5 + ik中文分词器例子,可从网页抓取输出流,并通过关键字查询相关文件 java ,亲自测试可以使用
inferCNV包安装问题及解决办法
InferCNV是一个由broad研究所开发的,利用单细胞转录组数据分析肿瘤细胞拷贝数变异(CNV)的工具。基本思路是在整个基因组范围内,通过计算肿瘤细胞关于参考的“正常”细胞的相对表达,利用滑窗思想对邻近的基因相对表达,计算拷贝数。 先贴一个官方安装说明: 官方infercnv安装说明 安装infercnv包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager:
Lucene 中文分词器概述 与 Ik-Analyzer 使用教程
目录 Ik-Analyzer 简介 GoogleCode 官网介绍 IK Analyzer 2012 特性 版本兼容 Ik-Analyzer 使用 Ik-Analyzer 下载 导入开发包 创建索引 查询索引 官方示例 Ik-Analyzer 简介 GoogleCode 开源项目 :http://code.google.com/p/ik-analyzer/,开发包下载地址:...
告别纯代码:用Visual Studio为LabVIEW封装一个‘即插即用’的海康VisionMaster控件
本文介绍如何利用Visual Studio为LabVIEW封装一个‘即插即用’的海康VisionMaster控件,解决传统集成方式中的代码臃肿和维护困难问题。通过.NET控件封装核心功能,实现LabVIEW与VisionMaster的高效对接,显著提升工业自动化开发效率。
Lucene——IK分词器测试
文章目录IK分词器测试一、导入相关依赖二、使用Lucene自带的分词器代码三、lucene6.0使用IK分词器需要修改IKAnalyzer和IKTokenizer四、在resource下创建一个ext.dic(分词文件),stopword(停止分词文件)五、测试 IK分词器测试 一、导入相关依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId>
自回归分布滞后模型 (ARDL)及 Stata 具体操作步骤
例如,Bahmani-Oskooee 和 Brooks(1999)研究了汇率波动与贸易收支之间的关系,发现汇率的变动在长期和短期内对贸易收支的影响存在差异,ARDL 模型能够有效地捕捉这种复杂的关系。它结合了自回归(Autoregressive,AR)模型和分布滞后(Distributed Lag,DL)模型的特点,能够同时考察变量之间的短期和长期关系。假设我们收集了一段时间内的居民消费和可支配收入数据,通过对这些数据进行分析和估计,可以得到模型的参数估计值,从而揭示消费与收入之间的短期和长期关系。
【2026年华为暑期实习(AI)-4月8日-第一题- 选择题】(题目+思路+Java&C++&Python解析+在线测试)
答案与解析 1. 相关系数问题 答案:C. 完全负线性相关 解析:相关系数ρ=-1表示X和Y之间存在完全负线性相关关系,所有数据点都严格落在一条斜率为负的直线上。 2. 矩阵秩问题 答案:B. Σ的对角线上非零奇异值的个数 解析:矩阵A的秩等于其奇异值矩阵Σ中非零奇异值的个数,因为U和V都是正交矩阵,不改变矩阵的秩。 3. 条件概率问题 答案:B. 0.5 解析:根据全概率公式和贝叶斯公式计算,P(B)=0.5×0.4+0.3×0.6=0.38,P(A|B)=(0.5×0.4)/0.38≈0.526,最接近
Lucene分词器详解
Lucee4.0和ikAnalyzer分词器
【WRF-Urban】URBPARM_LCZ.TBL 查找表解释及内容
URBPARM_LCZ.TBL 查找表解释及内容
Lucene学习(三) 使用IK 分词器
下载IK分词器 访问:https://github.com/medcl/elasticsearch-analysis-ik/releases 去下载 分词器的源码压缩包。 下载好之后。解压缩。使用idea打开项目。 使用如下命令 mvn install -Dmaven.test.skip=true 这样你就可以在项目中自己的maven 仓库中检索到这个分词器了。 <dependency>...
ISP算法及架构分析介绍
ISP算法及架构分析介绍ISP即Image Signal Processor,是一种图像处理架构,不是我们用的下载器。ISP其实算是图像处理的一个特例,一般应用于前端设备(相对于SENSOR),从结果上看就是将RAW数据转换成压缩后的RGB(一般)数据,供后续CPU使用(识别、压缩等)。市面上很少有直接介绍ISP的书籍或者资料,今天我们主要是聊一聊ISP算法的架构,这样大...
44位abogus补环境与纯算逆向分析
44位ab参数补环境与纯算加密流程逆向分析
docker安装elasticsearch和ik分词器
什么是elasticsearch?一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能什么是elastic stack(ELK)?是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch什么是Lucene?是Apache的开源搜索引擎类库,提供了搜索引擎的核心API创建倒排索引时对文档进行分词用户搜索时,对输入的内容进行分词。
ROS机器人未知环境自主探索功能包explore_lite总结
本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp
Lucene的Field域、分词器
1.1 分词器介绍 在对文档(Document)中的内容进行索引前,需要对域(Field)中的内容使用分析对象(分词器)进行分词 。分词的目的是为了索引,索引的目的是为了搜索。过程是先分词,再过滤。 分词:将Document中Field域的值切分成一个一个的单词。具体的切分方法(算法)根据使用的 分词器而不同。 过滤:去除标点符号,去除停用词(的、啊、是、is、the、a等),词的大写转...
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
IK分词器和ElasticSearch集成使用
虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。如果你也想成为一名好的架构师,那或许这份Java成长笔记你需要阅读阅读,希望能够对你的职业发展有所帮助。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
ik分词器 mysql php_Lucene全文搜索之分词器:使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)...
注意:基于lucene5.5.x版本一、简单介绍下IK AnalyzerIK Analyzer是linliangyi2007的作品,再此表示感谢,他的博客地址:http://linliangyi2007.iteye.com/IK Analyzer支持两种分词,一种是最细粒度分词(推荐使用,Ik默认采用最细粒度),还有一种的智能分词(测试了一下智能分词还没有lucene自带的分词准确,呵呵了)。二、...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
Spring Boot —— IK 分词器集成
文章目录Spring Boot —— IK 分词器集成应用场景使用方式引入maven编写工具类编写测试类 Spring Boot —— IK 分词器集成 原文出处:https://www.cnblogs.com/yanl55555/p/12540696.html 应用场景 采集的标题包含目标对象,但是通过字符串比较无法获取,我们可以通过分词器分词后再进行比较 例如: // 采集的字段 String title = "今天天气很不错!可以做什么呢?"; // 需要匹配的内容 String souceCont
lucene的分词器
package cn.tedu; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer; import org.apache.lucene.analysis.core.WhitespaceAnalyzer; import org.apache.lucen
[ElasticSearch系列三] Elasticsearch IK分词器 介绍、下载、安装及使用
elasticsearch中查询数据默认使用的是标准分词器(analyze)会将所查词汇中的每个字单独分成一个词,因此我们就引进IK分词器,对中文进行分词,此外对中文进行分词的分词器还有很多(例:word分词器、庖丁解牛、盘古分词,Ansj分词等) 前面我们分析了ElasticSearch的安装,本章主要对Elasticsearch中插件IK分词器进行介绍及使用
1095



被折叠的 条评论
为什么被折叠?



