全文检索引擎
目前主流的是 ElasticSearch
和python写的whoosh,这些引擎适合一些特别大型的项目,不差钱,不差硬件的公司。
然后一些小项目、个人项目,在配置非常低的服务器上运行,这时候就需要有一个能减少硬件资源消耗低全文检索引擎了。
出于这个目的,我们自己研发了基于golang的全文检索引擎:GoFound
。对内存的消耗非常少。
而且支持分页、id排序、相关度排序、关键词高亮、不区分大小写搜索
Django项目使用
安装python客户端
pip install gofound
- 使用
import gofound
def add_document():
"""
添加索引
"""
client = gofound.Client(url="http://127.0.0.1:5678/api")
res = client.add_document(1000, "探访海南自贸港“样板间”", {
"content": "洋浦经济开发区地处海南西北部洋浦半岛,是21世纪海上丝绸之路与西部陆海新通道的交汇节点。是国务院1992年批准设立的。我国第一个由外商成片开发、享受保税区政策的国家级开发区",
})
print(res)
def search():
"""
搜索
"""
client = gofound.Client(url="http://127.0.0.1:5678/api")
res = client.query("探访海南自贸港", page=1, limit=10, order="desc")
print(res)
# 遍历数据
if res.get('state'):
documents = res.get('data').get('documents')
if documents:
for item in documents:
print(item)
def highlight():
"""
关键词高亮
"""
client = gofound.Client(url="http://127.0.0.1:5678/api")
res = client.query("探访海南自贸港", page=1, limit=10, order="desc", highlight={'preTag': '<span>', 'postTag': '</span>'})
print(res)
# 遍历数据
if res.get('state'):
documents = res.get('data').get('documents')
if documents:
for item in documents:
print(item)
def remove():
"""
删除索引
"""
client = gofound.Client(url="http://127.0.0.1:5678/api")
res = client.remove_document(1000)
print(res)
if __name__ == '__main__':
# add_document()
search()
# remove()