网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

国内搜索引擎(打开搜索引擎)

GG网络技术分享 2025-03-18 16:05 2


10 分钟 纯 Python 搭建全文搜索引擎# 代码所在# 思考# 结果

作者:大鱼的鱼塘

链接:https://brucedone.com/archives/838

有一个群友在群里问个如何快速搭建一个搜索引擎,在搜索之后我看到了这个

# 代码所在

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

官方很贴心,很方便的是已经提供了docker 镜像,基本pull下来就可以很方便的使用了,执行命令

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的状态,就可以正常的使用了

# 思考

怎么样,是不是很方便,我们先看看源码是怎么样实现的

我们打开里面的代码,其实本质就是将request之后的结果做一个大的聚合,至于数据来源,我们可以是来于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 isinstance(obj, Iterable)

def parse(query):

q =

for part in query.split(‘/’):

if part == ”:

continue

q.append(part)

return q

def do_query(data, q):

ret =

if not q:

return ret

qkey = 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))

if not is_iterable(value):

ret.extend(do_query(value, q[1:]))

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]

title = query(result, title_query)[0]

content = query(result, content_query)[0]

results.append({‘url’: url, ‘title’: title, ‘content’: content})

for url, title, content in zip(

query(json, url_query),

query(json, title_query),

query(json, content_query)

):

if not suggestion_query:

return results

for suggestion in query(json, suggestion_query):

results.append({‘suggestion’: suggestion})

# 结果

每个response的时候我们都要以轻松的定制返回的数据(可以是网络,可以是数据库,可以是文件),那我们进一步想一下,如果我们可以hack response 结果,那我们完全可以将自己爬来的数据做为返回结果。如果是1024之类的,完全可以打造自己的“爱好”小引擎,代码我就不贴了,大家可以自己动手自己玩玩。结合jieba分词,可以更好玩一点。

搜索引擎高级搜索功能,语法指令搜索功能你用过吗

搜索引擎网站是我们日常生活常用的网站,但是大部分人都停留在简单的关键词搜索,却没有探索使用过搜索引擎的高级搜索功能以及一些常见的语法命令搜索功能,下面我们一起来了解一下搜索引擎的一些高级技能吧。

国内各大搜索引擎高级搜索功能

1.百度搜索:包含一些基础筛选功能、高级搜索功能和指令功能。

搜索关键词的时候,搜索框右下方有一个搜索工具,可以提供基础筛选。

通过搜索工具,一是可以输入其他网站网址,筛选网站站内搜索结果;二是可以选择不同的文件类型,文件类型包括PDF、doc、XLS、PPT、RTF等;三是可以选择网页的时间,时间可以自己定义和选择。

百度搜索的高级搜索功能在网页右上角的设置—>选择高级搜索,我们可以通过高级搜索功能检索到更加精准的内容,可以设置不需要搜索到的词汇和可能包含到的词汇,可以设置搜索关键词是标题、URL或者网页任何地方,也可以设置站内检索。

2.奇虎360搜索:只有简单的高级搜索设置功能,高级搜索功能在右上角的设置—>高级搜索,可以设置搜索的文件格式和站内检索。

3.搜狗搜索:可以设置基础筛选时间和高级搜索,高级搜索功能也是在右上角设置—>高级搜索,可以设置拆分关键词和不拆分关键词,可以设置站内检索和检索位置查询,可以设置排序和格式。

我们常用的命令搜索一般有三种,分别是Site指令、inurl 指令和intitle指令。

Site指令是查询某个网站中被搜索引擎收录的页面数量,命令语法为site:域名,如果想查网站关键词则可以在域名后面加上关键词,语法为site:域名+空格+关键词。

inurl 指令是查询网页URL中包含的搜索指令关键词的网页。因此,使用inurl指令对搜索结果中的URL进行限定,就可以获得比较精准的搜索结果。语法命令为inurl :关键词(中英皆可)。

intitle 指令是查询在页面标题中包含指定关键词的网页,语法命令为intitle:关键词。

标签:

提交需求或反馈

Demand feedback