欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql lucene 結(jié)合

林子帆2年前11瀏覽0評論

近年來,全文搜索引擎在互聯(lián)網(wǎng)公司中得到了廣泛應(yīng)用。Mysql作為常用的數(shù)據(jù)庫之一,結(jié)合Lucene全文搜索引擎可以更加方便高效地實現(xiàn)全文搜索。

#1.新建索引庫
def search_index(model, id):
"""
新建索引庫
"""
obj = model.objects.filter(id=id).first()
if not obj:
logger.error('Cannot find {} object with id={}'.format(
model.__name__,
id)
)
return
payload = obj.to_search_dict()
payload['_id'] = obj.id
payload['_type'] = model.__name__
payload['_index'] = obj.__class__.__name__.lower()
es.index(
index=payload['_index'],
doc_type=payload['_type'],
id=payload['_id'],
body=payload,
refresh=True,
)

上述代碼是新建索引庫的Python函數(shù),通過從數(shù)據(jù)庫中查詢數(shù)據(jù),再將數(shù)據(jù)轉(zhuǎn)成字典形式,存入ES的索引庫中。由于查詢數(shù)據(jù)及索引庫的性質(zhì),使用Python語言做處理。

#2.搜索指定關(guān)鍵字
def search(keyword, page=1, per_page=10, filter_path=None):
"""
簡單的搜索,可以添加過濾選項
"""
dsl = {
'query': {
'multi_match': {
'query': keyword,
'fields': ['title', 'content'],
}
},
'highlight': {
'fields': {
'title': {},
'content': {},
}
},
'from': (page-1) * per_page,
'size': per_page,
}
if filter_path:
dsl['_source'] = {
'include': filter_path,
}
res = es.search(body=dsl)
return res

上述代碼為搜索關(guān)鍵字的Python函數(shù),不同于新建索引庫的函數(shù),搜索需要ES的全文搜索引擎來實現(xiàn)。Dsl是ES提供的高級查詢語言,可以建立復(fù)雜的過濾條件與查詢條件。相比于傳統(tǒng)MySQL的like語句,效率更快。

相信使用Mysql與Lucene結(jié)合的全文搜索引擎能夠更好的滿足互聯(lián)網(wǎng)公司的需求,提高數(shù)據(jù)查詢效率。

上一篇mysql lur
下一篇mysql luix