Lucene简要笔记

一、 Lucene 概念
以索引文件方式存放在磁盘中
二、 Lucene操作
a) 建立索引
i. 实体类,有主ID,还有其他字段
ii. 建立索引库路径 Directory directory = new FSDirectory.open(”./indexDir”);
iii. 建立分词器 Analyzer analyzer = new StandarAnalyzer(Version.LUCENE_30)
iv. 将实体类转为Document doc = new Document();doc.add(new Field(“id”,id,Store.YES, Index.Analyzer))
v. 添加 IndexWriter indexWriter = new IndexWriter(directory,analyzer,MaxFieldLength.LIMITED) ; indexWriter.addDocument(doc)
vi.
b) 搜索
i. 索引库目录
ii. 分词器
iii. 把查询字符转为Query对象QueryParser queryParser = new QueryParser(Version.LUCENE_30,”title”, analyzer),在哪个字段中搜索。queryParser.parse(搜索内容)
iv. 执行查询,得到 中间结果
indexSearcher indexSearcher = new IndexSearcher(directory);
TopDocs topDocs = indexSearcher.search(query, 10)
topDocs.totalHits;
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
v. 处理结果
1. scoreDocs[i].doc;内部编号 indexSearcher.doc(内部编号)
vi. 再将Document转为实体
三、 优化
a) 合并文件optimize() .自动合并,默认最小是2,最大是10,setMergeFactor(3)
b) 在内存中加载数据:
启动时,加载:New RAMDirectory(fsDir)
结束时,往内存中写:indexWriter.addIndexsNoOptimize(ramDir);
四、 分词器:查询与写入需使用同一个分词器---对于中文,引用外加分词器,IKAnalyzer
a) 排序
i. 默认为,相关度
1. 在添加的时候,doc.setBoost(2F) 1F, 0.5F
ii. 自定义字段排序,类似于order by
1. Sort = new Sort(“id”, SortField.INT,true)
2. 使用indexSearcher.searcher(query, filter, n, sort)
b) 高亮
i. 作用:突出显示关键词,显示生成一段摘要
ii. 配置:
1. 摘要大小,默认小100个字
2. 显示效果的前后缀,默认<b>
3. API用法:
a) 生成并配置一个高亮器
i. Highlighter = new Highligher(new SimpleHTMLFormatter(“<font color=’red’>”,”</font>”), new QueryScorer(query))
b) 使用高亮器进行高亮操作
i. text = Highlighter.getBaseFragment(analyzer, fieldname, text)
c) Doc.getField(“content”).setValue(text);
c) 过滤:Filter 的实现 类
i. NumberRangleFilter
d) 各种方式的查询
i. 从使用方式区分:
1. 查询字符串 + QueryParser query:使用查询的语法
2. 直接构建Query对象:构建不同的子类
ii. 从效果上看:
1. 范围查询
2. 关键词查询
a) NumberRangle: id:{ 5 TO 10 }
b) TermQuery:条件title:lucene
c) WildcardQuery:通配符 title:lu*n?
d) MathAllDocsQuery:任何 *:*
e) FuzzQuery(new Term(“title”,”luceneX”, 0.7F)):70% 模糊查询title:luceneX~0.9
f) PhraseQuery:短语查询 title:”lucene ? ? 说明”
i. phraseQuery.add(mew Term(“title”,”lucene”,0));
ii. phraseQuery.add(new Term(“title”, “说明”,3));
iii. phraseQuery.setSlop(5)最多不超过5个
g) BooleanQuery:布尔查询 +*.* +ID:[5 TO 10]
i. booleanQuery.add(qury, Occur.NUST) ....MUST_NOT, SHOULD

五、 工具类
a) NumbericUtils
b) DateTools
六、


基于lucene的框架
类似于Hibernate框架,API也一样
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值