索引查找

41 篇文章 4 订阅
36 篇文章 1 订阅

问题

索引查找

索引查找的定义,来源百度百科

索引查找是在索引表和主表(即线性表的索引存储结构)上进行的查找。 索引查找的过程是:
  • 首先根据给定的索引值K1,在索引表上查找出索引值等于K1的索引项,以确定K1对应的子表在主表中的开始位置和长度,
  • 然后再根据给定的关键字K2,在对应的子表中查找出关键字等于K2的元素(结点)。

思路说明


对于一个list或者dictionary类型的数据,python有专门的内置函数index()进行索引查找,当然,这个查找的过程完全由python自己完成,不需要我们重写。


list索引:list.index(x)


python的官方解释是:

Return the index in the list of the first item whose value is x. It is an error if there is no such item.

翻译:返回list中的第一个值为x的元素索引,如果找不到返回错误。

例如:

>>> alist = ['I','am','a','human','you','are','a','programmer']
>>> alist.index('a') #注意:alist中有两个"a",但是只返回第一个索引值
2
>>> alist.index('am')
1
>>> alist.index('he')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 'he' is not in list


这个索引查找的复杂度是O(n)

对于较小的数据,list.index(x)足矣,但是,如果对象数据量比较大了,这个就有点小马拉大车的感觉了,怎么办?熟悉本博客风格的朋友肯定会想到,绝对不是让我们自己动手写一个索引查找的东西,虽然写一个不是不可以,但是本着“拿来主义”的精神,一定要先查找一下,看看python是否已经为我们做好了轮子?


Whoosh:全文索引


把官方文档的一段话拿过来:

Whoosh is a library of classes and functions for indexing text and then searching the index. It allows you to develop custom search engines for your content. For example, if you were creating blogging software, you could use Whoosh to add a search function to allow users to search blog entries.

简单翻译:

Whoosh是一个索引文本和搜索的库,允许你为你的内容设置自定义搜索引擎。比如如果创建一个博客,可以用whoosh为它添加一个搜索功能,以便用户来搜索博文。

python就是这么善解人意,就是这么高大上。

这个东西怎么用?

Whoosh安装


在ubuntu环境下,如果已经有pip或者easy_install,只需要直接运行:

$ sudo easy_install Whoosh

即可轻松安装。windows的朋友,是不是用linux的优势在这里体现出来呢?请用。

当然,也可以到官方下载源码进行安装

安装之后,输入下面的内容,如果不报错,就说明已经安装成功(一个就可以检验)。

>>> from whoosh.fields import *
>>> from whoosh.index import create_in

Whoosh应用


在官方文档上,有完整的应用讲述:(因为贴出链接,文章不能发出,所以请大家移步到github:qiwsir/algorithm上,看完整版,有链接)

此外,有几篇文章,是不错的,列在这里备查

(此处链接阉割了,理由同上,方法同上)


我将在后续文章中,分别阐述Whoosh的应用,敬请跟读。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qiwsir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值