地址:https://elasticsearch.cn/article/202
1. 在Elasticsearch中應(yīng)用機(jī)器學(xué)習(xí)排序LTR
將機(jī)器學(xué)習(xí)集成到搜索排名;使用簡單的神經(jīng)網(wǎng)絡(luò)共虑,最優(yōu)化文檔特征的權(quán)重值,最終達(dá)到一個最優(yōu)解盲链。
核心概念
使用不同的特征得到TopN的結(jié)果并進(jìn)行評價,根據(jù)評價信息訓(xùn)練模型迟杂。
- 通過分析來衡量用戶所反饋的相關(guān)度刽沾,并構(gòu)建一個評價列表,將文檔分級為精確相關(guān)的逢慌、模糊相關(guān)的和無關(guān)的悠轩,并用于查詢;
- 猜想哪些特征可能有助于相關(guān)度預(yù)測攻泼,比如特定屬性匹配程度的TF-IDF相關(guān)度、新穎性鉴象,以及搜索用戶的個性化特征等忙菠;
- 訓(xùn)練一個模型,將這些特征準(zhǔn)確無誤地映射到一個相關(guān)性得分上纺弊;
- 部署該模型到你的搜索基礎(chǔ)設(shè)施中牛欢,在線上環(huán)境中使用它來對搜索結(jié)果排序。
基本原理
LTR插件集成了RankLib和Elasticsearch淆游。RankLib有一個輸入文件作為評價依據(jù)傍睹,并輸出一個模型,該模型是內(nèi)置的可閱讀格式犹菱。接下來RankLib可通過編程或命令行來訓(xùn)練模型拾稳。一旦有了模型,Elasticsearch插件就會包含以下內(nèi)容:
- 一個自定義的Elasticsearch腳本語言腊脱,叫做ranklib访得,它把RankLib生成的模型作為一個Elasticsearch腳本;
- 一個自定義的LTR查詢陕凹,它輸入一個包含Query DSL查詢(那些特征)悍抑、一個模型名稱(就是第一步中上傳的模型)和打分結(jié)果的列表鳄炉。
由于LTR模型的實(shí)現(xiàn)成本很高,人們幾乎不會直接使用LTR查詢搜骡,而是對結(jié)果的Top N重新打分拂盯,比如:
{
"query": {/*a simple base query goes here*/},
"rescore": {
"window_size": 100,
"query": {
"rescore_query": {
"ltr": {
"model": {
"stored": "dummy"
},
"features": [{
"match": {
"title": <users keyword search>
}
}
...
實(shí)踐步驟
- LTR概念:http://opensourceconnections.com/blog/2017/02/24/what-is-learning-to-rank/
- Github地址:https://github.com/o19s/elasticsearch-learning-to-rank
- Demo代碼地址:https://github.com/o19s/elasticsearch-learning-to-rank/tree/master/demo
- 安裝依賴準(zhǔn)備數(shù)據(jù);
- 下載TMDB數(shù)據(jù)记靡,下載RankLib.jar谈竿;
- 啟動ES并安裝LTR插件;
- 索引數(shù)據(jù)到ES簸呈;
- 新建并且上傳特征榕订,特征使用1~n.json文件,每個特征可以包含一個簡單查詢或者復(fù)雜查詢蜕便;
- 收集評價信息劫恒,每一個特征會生成一個三元組的評價信息文件;
- 將全部特征的評價信息文件進(jìn)行合并轿腺;
- 使用合并后的文件進(jìn)行訓(xùn)練两嘴;
- 使用訓(xùn)練結(jié)果進(jìn)行搜索。
# 評價信息文件 <grade>,<docId>,<keywords>
# qid:1: rambo
#
#
# grade (0-4) queryid # docId title
4 qid:1 # 7555 Rambo
# 評價文件合并結(jié)果
4 qid:1 1:12.318446 2:9.8376875 # 7555 rambo
項(xiàng)目文檔
地址:http://elasticsearch-learning-to-rank.readthedocs.io/en/latest/index.html
2. 用ElasticSearch搭建自己的搜索和分析引擎
地址:http://wetest.qq.com/lab/view/300.html
一篇入門加實(shí)踐的文章族壳,文章主要介紹了ES的核心概念憔辫、關(guān)鍵配置項(xiàng)、Mapping基本用法仿荆、聚合的用法贰您,并結(jié)合實(shí)例對ES的性能進(jìn)行了分析。