理解Lucene索引与搜索过程中的核心类
理解索引过程中的核心类
欢迎访问我的个人网站http://wuyudong.com/
执行简单索引的时候需要用的类有
IndexWriter、Directory、Analyzer、Document、Field
1、IndexWriter
IndexWriter写索引是索引过程的核心组件这个类负责创建新的索引或者打开已有的索引以及向索引中添加、删除或更新被索引文档的信息但不能读取或搜索索引。IndexWriter需要开辟一定的空间来存储索引该功能由Directory完成
2、Directory
/** A Directory is a flat list of files. Files may be written once, when they
* are created. Once a file is created it may only be opened for read, or
* deleted. Random access is permitted both when reading and writing.
*
* p Javas i/o APIs not used directly, but rather all i/o is
* through this API. This permits things such as: ul
* li implementation of RAM-based indices;
* li implementation indices stored in a database, via JDBC;
* li implementation of an index as a single file;
* /ul
*
* Directory locking is implemented by an instance of {@link
* LockFactory}, and can be changed for each Directory
* instance using {@link #setLockFactory}.
*
*/
Directory描述了索引的存放位置是一个抽象类其子类负责具体指定索引的存放路径
3、Analyzer
Analyzer由IndexWriter构造方法指定负责从被索引的文本文件中提取词汇Analyzer是一个抽象类由其子类完成相关的功能
4、Document
代表一些域Field的集合Lucene只能从二进制文档中提取以Field实例形式的文本
5、Field
一篇文档包含不同类型的信息可以分开索引比如标题时间正文作者等都可以保存在不同的域里。
理解索引与搜索过程中的核心类Lucene提供的搜素接口一样很简单易懂
IndexSearcher、Term、Query、TermQuery、TopDocs
1、IndexSearcher
IndexSearcher用于搜索由IndexWriter类创建的索引它需要Directory实例来掌控前期创建的索引然后才能提供大量 的搜索方法。最简单的搜索方法是将单个的Query对象和int topN计数作为该方法的参数并返回一个TopDocs对象该方法的一个典型应用如下
Directory dir = FSDirectory.open(new File("/tmp/index")); IndexSearcher searcher = new IndexSearcher(dir); Query q = new TermQuery(new Term("contents", "lucene")); TopDocs hits = searcher.search(q, 10); searcher.close();
2、Term
Term对象是搜索功能的基本单元。在搜索过程中可以创建Term对象和TermQuery对象一起使用
Query q = new TermQuery(new Term("contents", "lucene")); TopDocs hits = searcher.search(q, 10);
上面代码的含义是寻找content域中包含lucene的前10个文档并按照降序排列
3、Query
lucene中包含很多具体的Query查询子类。TermQuery、BooleanQuery、PhraseQuery、
PrefixQuery、 PhrasePrefixQuery、TermRangeQuery、NumericRangeQuery、
FilteredQuery、SpanQuery
4、TermQuery
TermQuery是lucene中最基本的查询类型用来匹配指定域中包含特定项的文档
5、TopDocs
TopDocs类是一个简单的指针容器指针一般指向前N个排名的搜索结果搜索结果即匹配查询条件的文档
这就是搜索引擎读书笔记-day3-5.检索模型与搜索排序 搜索结果排序融合了上百种排序因子,而重要两因素是:用户查询和网页内容相关性 及 网页链接情况。本节介绍内容相关性介绍网页排序
如何使用Marketing Cloud的扩展字段作为搜索条件进行搜索 需求:我在Marketing Cloud的contact模型上用custom field这个应用创建了一个Extension field,名称为微信ID。 现在客户的需求是使用这个字段作为过滤条件进行搜索。
EPZS搜索过程 EPZS(Enhance Predictive Zonal Search) 增强预测区域搜索,是一种整像素运动估计的搜索算法。 EPZS采用的是相关性较高的预测方法。这里的相关性较高是指,更多地根据已有的条件,来进行运动向量的预测(如采用相邻块的mv作为当前搜索块的mv进行预测)。
相关文章
- 垃圾分类小程序,含图片识别和语音识别,视频播放,垃圾分类搜索,垃圾知识答题,积分排行,文章推荐,收藏文章等功能
- 数据结构:一文看懂二叉搜索树 (JavaScript)
- 论记忆化搜索
- 启发式搜索
- material Tree组件的前端模糊搜索
- 跨平台极速文件搜索工具,终于找到了!
- ChatGPT,为啥写二分搜索容易死循环?
- MongoDB空间索引:解锁无限空间搜索可能(mongodb空间索引)
- 在 Linux 中探索最佳搜索程序(linux搜索程序)
- MySQL索引:精准搜索的算法之路(mysql索引的算法)
- 提高MySQL性能的关键!搜索索引优化技巧大揭秘(mysql搜索索引)
- MySQL模糊查询:实现超越精准搜索的关键技术(mysql 模糊查询语句)
- Redis强力助力地图区域搜索更精准(地图区域搜索redis)
- 索引红色开启Redis资源搜索之旅(redis资源搜索)