- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 Lucene使用注意事项
关键词区分大小写 OR AND TO等关键词是区分大小写的,lucene只认大写的,小写的当做普通单词。读写互斥性 同一时刻只能有一个对索引的写操作,在写的同时可以进行搜索文件锁 在写索引的过程中强行退出将在tmp目录留下一个lock文件,使以后的写操作无法进行,可以将其手工删除时间格式 lucene只支持一种时间格式yyMMddHHmmss,所以你传一个yy-MM-dd HH:mm:ss的时间给lucene它是不会当作时间来处理的设置boost 有些时候在搜索时某个字段的权重需要大一些,例如你.
2022-05-29 13:39:58
418
原创 Lucene相关度排序
什么是相关度排序Lucene对查询关键字和索引文档的相关度进行打分,得分高的就排在前边。如何打分Lucene是在用户进行检索时实时根据搜索的关键字计算出来的,分两步:计算出词(Term)的权重根据词的权重值,计算文档相关度得分。明确索引的最小单位是一个Term(索引词典中的一个词),搜索也是要从Term中搜索,再根据Term找到文档,Term对文档的重要性称为权重,影响Term权重有两个因素:2.1 Term Frequency (tf): 指此Term在此文档中出现了多少次。tf 越大说明
2022-05-29 13:37:01
607
原创 Lucene优化
解决大量磁盘IOconfig.setMaxBufferedDocs(100000); 控制写入一个新的segment前内存中保存的document的数目,设置较大的数目可以加快建索引速度。数值越大索引速度越快, 但是会消耗更多的内存indexWriter.forceMerge(文档数量); 设置N个文档合并为一个段数值越大索引速度越快, 搜索速度越慢; 值越小索引速度越慢, 搜索速度越快更高的值意味着索引期间更低的段合并开销,但同时也意味着更慢的搜索速度,因为此时的索引通常会包含更多的段。如
2022-05-29 13:31:43
495
原创 Lucene嵌套查询
Lucene5之前要实现 (a or b) and cBooleanQuery bquery1 = new BooleanQuery();TermQuery tQuery1 = new TermQuery(new Term("xxx", "a"));TermQuery tQuery2 = new TermQuery(new Term("xxx", "b"));TermQuery tQuery3 = new TermQuery(new Term("xxx", "c"));bquery1.add(
2022-05-28 22:44:33
541
原创 Lucene获取分词的内容
FSDirectory directory = FSDirectory.open(new File("xxx")); IndexReader indexReader = DirectoryReader.open(directory); String[] fields = {"xxx"}; for (int i = 0; i < fields.length; i++) { Terms ter = MultiFields.getTerms(indexReader, fields[i]);
2022-05-28 22:27:41
366
原创 Lucene查询语法
TermQuery 是最常用的查询对象,也是 Lucene 可以使用的许多复杂查询的基础。它用于根据区分大小写的密钥检索文档Query query = new TermQuery(new Term("title","java"));MatchAllDocsQuery匹配所有文档//查询所有文档Query query = new MatchAllDocsQuery();// 相当于查询语法 : *:*TermRangeQuery是用于字符串范围查询的,既然涉及到范围必然需要字符串比.
2022-05-28 22:21:17
1910
原创 Lucene索引库维护
添加索引调用 indexWriter.addDocument(doc)添加索引。修改索引更新索引是先删除再添加,建议对更新需求采用此方法并且要保证对已存在的索引执行更新,可以先查询出来,确定更新记录存在执行更新操作。如果更新索引的目标文档对象不存在,则执行添加。@Test public void testIndexUpdate() throws Exception { // 创建分词器 Analyzer analyzer = new StandardAna
2022-05-28 20:41:32
414
原创 Lucene的Field域类型
Field属性Field是文档中的域,包括Field名和Field值两部分,一个文档可以包括多个Field,Document只是Field的一个承载体,Field值即为要索引的内容,也是要搜索的内容。是否分词(tokenized)是:作分词处理,即将Field值进行分词,分词的目的是为了索引。比如:商品名称、商品描述等,这些内容用户要输入关键字搜索,由于搜索的内容格式大、内容多需要分词后将语汇单元建立索引否:不作分词处理比如:商品id、订单号、身份证号等是否索引(indexed)是:进
2022-05-28 19:43:10
648
原创 Lucene搜索过程测试
@Test void testIndexSearch() throws ParseException, IOException { //1.创建分词器(对搜索的关键词进行分词使用) //注意:分词器要和创建索引的适合使用的分词器相同 Analyzer analyzer = new StandardAnalyzer(); //2.创建查询对象,第一个参数:默认查询域,如果查询的关键字中带搜索的域名,则从指定域中查询,如果不带域名则从,默认
2022-05-28 17:04:41
456
原创 Lucene创建索引
引入相关jar包 <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.12.1</version> </dependency> <dependency>
2022-05-28 16:27:58
764
原创 PageHelper使用过程中syntax error, error in :‘it 1 LIMIT ? ‘
问题原因:PageHelper 方法使用了静态的 ThreadLocal 参数,分页参数和线程是绑定的。只要我们保证在 PageHelper 方法调用后紧跟 MyBatis 查询方法,这就是安全的。因为 PageHelper 在 finally 代码段中自动清除了 ThreadLocal 存储的对象。线程中start的page 不能保证线程在当前执行退出时清理完page变量。一次PageHelper的分页过程如下:一、设置 page 参数二、执行 query 方法三、Interceptor 接
2022-05-23 15:24:25
498
原创 Lucene搜索理论
搜索理论基础数据查询方法1.顺序扫描法算法描述:所谓排序扫描,例如要找内容包含一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。优点:查询准确率高缺点:查询速度会随着查询数据量的增大,越来越慢使用场景:数据库中的like关键字模糊查询文本编辑器的Ctrl + F查询功能2.倒排索引先举一个例子:例如我们使用新华字典查询汉字,新华字典有偏旁部首的目录(索
2022-05-22 20:01:37
671
原创 Java数组
Java数组01:什么是数组Java数组02:数组的声明和创建Java数组03:三种初始化及内存分析Java数组04:下标越界及小结Java数组05:数组的使用Java数组06:二维数组Java数组07:Arrays类讲解Java数组08:冒泡排序Java数组09:稀疏数组...
2022-05-05 23:39:17
344
原创 Java方法
Java方法01:什么是方法?Java方法02:方法的定义和调用Java方法03:方法的重载Java方法04:命令行传递参数Java方法05:可变参数Java方法06:递归讲解
2022-04-24 21:41:05
315
原创 工作踩坑篇
使用tomcat部署vue项目第一次访问请求正常,刷新页面报404错误解决方法:如果 URL 匹配不到任何静态资源,则应该返回同一个 app 依赖的index.html 页面。在ROOT根目录下创建WEB-INF文件夹,在WEB-INF中写一个web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w
2022-04-20 21:58:07
439
原创 java获取请求的url地址
java获取请求的url地址1.获取全路径http://xxxxx:xxxx/demo/loginController/loginrequest.getRequestURL();2.获取协议名和域名2.1 获取协议名,例如:http;获取方法:request.getScheme();2.2 获取域名 localhost;获取方法: request.getServerName();3.获取请求所有参数 map类型request.getParameterMap()4.获取/demo项目名req
2021-11-12 16:10:25
5362
原创 关于在读取Excle文件的时候报错:Cell index must be >= 0解决方法
关于在读取Excle文件的时候报错:Cell index must be >= 0
2019-10-20 22:06:18
18980
1
原创 本地或者服务器同时启动2个或多个tomcat
1.## window10环境下jdk的安装与配置(1)从官网下载jdk,地址:jdk1.8.0_101,官网链接地址https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html如下图:(2)具体安装步骤打开后一直点击下一步安装完成即可,我安装的目录是c盘,安装过程略。(3)下面主...
2019-10-10 22:41:18
869
原创 mysql 8.0.12 解压版安装
1.mysql下载地址: http://dev.mysql.com/downloads/mysql/ 2.将下载下来的mysql的压缩包解压到创建的目录下,打开文件查看是否存在my-default.ini,如果存在就把my-default.ini修改一下或者自己建一个my.ini文件 [mysqld]设置3306端口port=3306设置mysql的安装目录bas...
2018-09-05 17:04:53
346
windows管理员授权.reg
2019-12-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人