1 Star 1 Fork 0

武松 / full_text_search

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

基于Python的全文检索引擎

基于Lucene基本原理来实现

  • 分词
  • 字典
  • 文档
  • 索引

分词采用jieba

文件

test.py 中有 test_index和test_search用来做索引和搜索测试

索引原理

fts.index 这个文件记录了 关键词 和关键词对应的文档索引位置

文档索引 是文档在 fts.doc中的区块索引,通过这个索引可以计算出数据块的准确位置

例如: 文档索引=1

取文件指针开始和结束:

start = 1 - 1 * 4098

end = 1 * 4098

搜索原理:

  1. 加载索引文件到内存 fts.index
  2. 搜索的关键词通过jieba分词,然后得到的词在内存中查找 fts.index符合的关键词
  3. 查找到的关键词取到pos,这个pos就是 fts.doc的索引位置
  4. 通过索引位置取到文档

通过上面这个步骤就可以完美的实现全文检索

例如索引的词是:

雷军向金山所有员工赠予每人600股的股票

分词的关键字有: 雷军、金山....

然后我们搜索词是:

雷军是金山的的董事长吗?

这时候分词 有3个关键字

雷军、金山、董事长

通过3个任意关键词就可以找到 索引中的关键词,然后还可以根据击中次数得到分数score

最后根据score 排序

目前实现的功能

  • 2021年07月06日

只有最基本的内存全文检索,没有排序、没有分页

  • 2021年07月07日
  1. 支持score,并且按score排序
  2. 优化性能和代码
MIT License Copyright (c) 2021 武松 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于Python原生的全文检索引擎,原生支持中文 展开 收起
Python
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/tompeppa/full_text_search.git
git@gitee.com:tompeppa/full_text_search.git
tompeppa
full_text_search
full_text_search
master

搜索帮助