国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

香港云服务器
服務(wù)器之家 - 腳本之家 - Python - 10分鐘用Python快速搭建全文搜索引擎詳解流程

10分鐘用Python快速搭建全文搜索引擎詳解流程

2022-02-20 00:23Monster_起飛 Python

讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章帶你用python花10分鐘迅速搭建一個(gè)好玩的Python全文搜索引擎,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平

有一個(gè)群友在群里問(wèn)個(gè)如何快速搭建一個(gè)搜索引擎,在搜索之后我看到了這個(gè)

10分鐘用Python快速搭建全文搜索引擎詳解流程

 

代碼所在

  • Git:https://github.com/asciimoo/searx

官方很貼心,很方便的是已經(jīng)提供了docker 鏡像,基本pull下來(lái)就可以很方便的使用了,執(zhí)行命令

cid=$(sudo docker ps -a | grep searx | awk '{print $1}')  
echo searx  cid is $cid  
if [ "$cid" != "" ];then  
  sudo docker stop $cid  
  sudo docker rm $cid  
fi 
sudo docker run -d --name searx -e IMAGE_PROXY=True -e BASE_URL=http://yourdomain.com  -p 7777:8888 wonderfall/searx

然后就可以使用了,正常查看docker的狀態(tài),就可以正常的使用了

 

思考

怎么樣,是不是很方便,我們先看看源碼是怎么樣實(shí)現(xiàn)的

10分鐘用Python快速搭建全文搜索引擎詳解流程


我們打開(kāi)里面的代碼,其實(shí)本質(zhì)就是將request之后的結(jié)果做一個(gè)大的聚合,至于數(shù)據(jù)來(lái)源,我們可以是來(lái)于DB,或者文件,我們可以看一下他的核心代碼

from urllib import urlencode  
from json import loads  
from collections import Iterable  
search_url = None  
url_query = None  
content_query = None  
title_query = None  
suggestion_query = ''  
results_query = ''  
# parameters for engines with paging support  
#  
# number of results on each page  
# (only needed if the site requires not a page number, but an offset)  
page_size = 1 
# number of the first page (usually 0 or 1)  
first_page_num = 1  
def iterate(iterable):  
  if type(iterable) == dict:  
      it = iterable.iteritems()  
  else:  
      it = enumerate(iterable)  
  for index, value in it:  
      yield str(index), value 
def is_iterable(obj):  
  if type(obj) == str:  
      return False  
  if type(obj) == unicode: 
      return False  
  return isinstance(obj, Iterable)  
def parse(query): 
  q = []  
  for part in query.split('/'):  
      if part == '':  
          continue  
      else:  
          q.append(part)  
  return q  
def do_query(data, q):  
  ret = []  
  if not q:  
      return ret  
  qqkey = q[0]  
  for key, value in iterate(data):  
      if len(q) == 1:  
          if key == qkey:  
              ret.append(value)  
          elif is_iterable(value):  
              ret.extend(do_query(value, q))  
      else:  
          if not is_iterable(value):  
              continue  
          if key == qkey:  
              ret.extend(do_query(value, q[1:]))  
          else:  
              ret.extend(do_query(value, q))  
  return ret  
def query(data, query_string): 
  q = parse(query_string)  
  return do_query(data, q)  
def request(query, params):  
  query = urlencode({'q': query})[2:]  
  fp = {'query': query}  
  if paging and search_url.find('{pageno}') >= 0:  
      fp['pageno'] = (params['pageno'] - 1) * page_size + first_page_num  
  params['url'] = search_url.format(**fp)  
  params['query'] = query  
  return params  
def response(resp):  
  results = []  
  json = loads(resp.text)  
  if results_query:  
      for result in query(json, results_query)[0]:  
          url = query(result, url_query)[0] 
          content = query(result, content_query)[0]  
          results.append({'url': url, 'title': title, 'content': content})  
  else: 
       for url, title, content in zip(  
          query(json, url_query),  
          query(json, title_query),  
          query(json, content_query)  
      ):  
          results.append({'url': url, 'title': title, 'content': content}) 
  if not suggestion_query:  
      return results 
   for suggestion in query(json, suggestion_query):  
      results.append({'suggestion': suggestion})  
  return results 

 

結(jié)果

每個(gè)response的時(shí)候我們都要以輕松的定制返回的數(shù)據(jù)(可以是網(wǎng)絡(luò),可以是數(shù)據(jù)庫(kù),可以是文件),那我們進(jìn)一步想一下,如果我們可以hack response 結(jié)果,那我們完全可以將自己爬來(lái)的數(shù)據(jù)做為返回結(jié)果。如果是1024之類的,完全可以打造自己的“愛(ài)好”小引擎,代碼我就不貼了,大家可以自己動(dòng)手自己玩玩。結(jié)合jieba分詞,可以更好玩一點(diǎn)。

到此這篇關(guān)于10分鐘用Python快速搭建全文搜索引擎詳解流程的文章就介紹到這了,更多相關(guān)Python 搜索引擎內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/Monsterof/article/details/120973384

延伸 · 閱讀

精彩推薦
1129
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久久久久久久一区二区三区 | 中文字幕亚洲一区二区va在线 | 综合久久久| 日本在线观看一区 | 欧美日韩在线精品 | 青草成人免费视频 | 99视频在线| 国产亚洲激情 | 欧美日韩一区在线 | 亚洲欧美影院 | 国产精品久久久久久中文字 | 精品少妇一区二区三区在线播放 | 国产精品欧美久久久久一区二区 | 精品亚洲成a人在线观看 | 色综合久久久 | 亚洲综合在线视频 | 黄色片免费在线观看视频 | 欧美精三区欧美精三区 | 在线视频91| 中文字幕 亚洲一区 | 成人网av| 99国产一区| 国产精品久久久久久久美男 | 日韩免费观看视频 | 日本三级网址 | 国产精品久久久久久久美男 | 毛片一级在线观看 | 综合在线视频 | 九九精品视频在线观看 | 日韩成人在线影院 | 国产精品久久久久久久久费观看 | 日韩免费av一区二区 | 国产在线拍揄自揄拍视频 | 午夜精品美女久久久久av福利 | 日韩三级 | 中文永久免费观看 | 69久久 | 国产美女视频自拍 | 久久亚洲视频 | 亚洲高清视频在线 | 中文字幕在线看 |