高效实现诱导输入及推荐执行人的方法
最新的项目遇到这样2个需求: a. 在输入用户时要求根据输入的字符针对邮箱及昵称进入实时提示,在输入项目时要求根据输入的字符针对项目名称进行实时提示。 b. 在输入执行人[抄送人]时要求可以根据-1.相似标题 2.最常用联系人 3.任务所属项目-进行执行人和抄
最新的项目遇到这样2个需求:
a. 在输入用户时要求根据输入的字符针对邮箱及昵称进入实时提示,在输入项目时要求根据输入的字符针对项目名称进行实时提示。
b. 在输入执行人[抄送人]时要求可以根据—-1.相似标题 2.最常用联系人 3.任务所属项目—-进行执行人和抄送人的推荐,下文将以推荐执行人为例。
解决方案:
一、诱导输入
1.用户输入 ?? 系统中的用户数量较多,自己写程序去实现效果未必好,直接交给elasticsearch(以下简称es)的“PrefixQuery”。PrefixQuery是按前缀对索引进行搜索,吻合这个需求,只要将用户的邮箱、昵称建索引,就能按这两个字段进行匹配,且效率很高。前端使用jquery.fcbkcomplete.js来触发请求。
2.项目输入 ?? 此处有别于用户输入,发任务到项目中时,每个人所能选择的项目仅限于自己参与的项目,因此个数很有限(50个吧?撑死了)。因此大可以简单处理,在redis中维护一个“用户XX的项目”这样一个sorted set(这个缓存对于项目列表依然有意义,比如显示“我的项目”)。在匹配时,直接循环去indexOf。从redis中取也这个有序集合,速度是超快的,对这几十个的项目进行查找,资源消耗很小,整个过程都没有动到数据库,响应依然及时。
二、推荐执行人
推荐规则有三条:1、相似标题,2、常用联系人,3、项目中的成员。分别描述下每条规则的实现方案。
1.相似标题 ? 计算标题的相似度可以使用文本相似度算法(各语言均有各自实现,python中Levenshtein库实现了该算法),效果较好,如: ? In [1]: from Levenshtein import * ? In [2]: ratio(‘min_doc_freq’,'max_doc_freq’) ? Out[2]: 0.8333333333333334 ? 但是做为实时推荐,这种方式不可行,因为性能达不到要求。后台跑的程序可以考虑。es中有个mlt,即”more like this”,可以用于相似文本的查找,轻量级,速度快,缺点是准确度不会很高。es中有一种准确度更高的计算方式 ,是根据文本向量进行计算 ,前提是在建索引时需存储相应的向量值 ,这种方式准确度更多高,但性能却很差,且影响建索引的速度,显然也不适合做实时推荐 ,综上,采用es的more like this进行相似文本查询是最合适 ,开发维护难度也低,从各个角度来看,都比较划算.
2.常用联系人(按使用频度排序,这里频度的定义是使用越多频度越高) 采用redis计数器hincrby,维护某个用户执行人的字典,数据结构如下:
redis 127.0.0.1:6379> hgetall Account:50ab539ae00d39114400079d:execnt
1) “50ab53bde00d391144000d36″
2) “1″
3) “50ab53bee00d391144000d5b”
4) “4″
这笔数据表示用户50ab539ae00d39114400079d发给用户50ab53bde00d391144000d36发过一次任务,发给用户50ab53bee00d391144000d5b发过四次任务。redis中的hash字典占用空间很小,速度也快,居家旅行必备。有了这些基础数据,就可以将平常的联系人按使用频度进行排序。只要将取到的字典key 与value逆置, 就能很容易得到排序结果,包括前边使用es查询的相似标题得到的执行人,也可以使用这个字典来排序 ,多取几个相似标题也不怕了(太多也无益,暂时取10个)。key与value逆转会碰到一个问题,即多个value相同的情况,这么一来字典的key岂不不唯一了吗?这时pythonpaste实现的MultiDict就派上用场,MultiDict允许出现同名的key,对于处理url参数也相当实用。 总之,取出来,排序之。
3.根据所属项目的成员进行推荐 ??? 在项目中发起任务,或者发起任务时带有项目信息就有此需求。如自然语言发起任务进文本中带有#项目名#,自然语言输入的信息除了解析出时间、人物、标题外,还会得到项目名。当然,得到的标题会被拿去作相似度查询,好强大。。。 ??? 得到项目名就好办了,project.members就是项目成员,members作为一个内嵌文档存在project表中,这也是mongodb的特色,并且整个project对像放在memcached中,过程中资源开消很小。
通过以上三个步骤,得到了三组的用户若干s1(相似)、s2(常用)、s3(项目)但最终推荐人数最多只要6个,这里还涉及到排序填充去重问题。将三组用户分别根据基础数据以使用次数由高到低排序之。s1赋于最高优先级,s2次之,s3最后。开始填充:从s1开始填充,取两个,不足再从s2、s3中取,取足两个,则接着往s2、s3中取,s1不足使用s2、s3填充,s2不足使用s1、s3填充,s3不足使用s1、s2填充,排除已经加入的,直到取满6个或者取完三个集合。
原文地址:高效实现诱导输入及推荐执行人的方法, 感谢原作者分享。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

而後悔莫及、人們常常會因為一些原因不小心刪除某些聯絡人、微信作為一款廣泛使用的社群軟體。幫助用戶解決這個問題,本文將介紹如何透過簡單的方法找回被刪除的聯絡人。 1.了解微信聯絡人刪除機制這為我們找回被刪除的聯絡人提供了可能性、微信中的聯絡人刪除機制是將其從通訊錄中移除,但並未完全刪除。 2.使用微信內建「通訊錄恢復」功能微信提供了「通訊錄恢復」節省時間和精力,使用者可以透過此功能快速找回先前刪除的聯絡人,功能。 3.進入微信設定頁面點選右下角,開啟微信應用程式「我」再點選右上角設定圖示、進入設定頁面,,

番茄小說是一款非常熱門的小說閱讀軟體,我們在番茄小說中經常會有新的小說和漫畫可以去閱讀,每一本小說和漫畫都很有意思,很多小伙伴也想著要去寫小說來賺取賺取零用錢,在把自己想要寫的小說內容編輯成文字,那麼我們要怎麼樣在這裡面去寫小說呢?小伙伴們都不知道,那就讓我們一起到本站本站中花點時間來看寫小說的方法介紹。分享番茄小說寫小說方法教學 1、先在手機上打開番茄免費小說app,點擊個人中心——作家中心 2、跳到番茄作家助手頁面——點擊創建新書在小說的結

費馬大定理,即將被AI攻克?而整件事最有意義的地方在於,AI即將解決的費馬大定理,正是為了證明AI無用。曾經,數學屬於純粹的人類智力王國;如今,這片疆土正被先進的演算法所破解,所踐踏。圖片費馬大定理,是一個「臭名昭著」的謎題,在幾個世紀以來,一直困擾著數學家。它在1993年被證明,而現在,數學家們有一個偉大計畫:用電腦把證明過程重現。他們希望在這個版本的證明中,如果有任何邏輯上的錯誤,都可以由電腦檢查出來。專案網址:https://github.com/riccardobrasca/flt

手機遊戲成為了人們生活中不可或缺的一部分,隨著科技的發展。它以其可愛的龍蛋形象和有趣的孵化過程吸引了眾多玩家的關注,而其中一款備受矚目的遊戲就是手機版龍蛋。幫助玩家們在遊戲中更好地培養和成長自己的小龍,本文將向大家介紹手機版龍蛋的孵化方法。 1.選擇合適的龍蛋種類玩家需要仔細選擇自己喜歡並且適合自己的龍蛋種類,根據遊戲中提供的不同種類的龍蛋屬性和能力。 2.提升孵化機的等級玩家需要透過完成任務和收集道具來提升孵化機的等級,孵化機的等級決定了孵化速度和孵化成功率。 3.收集孵化所需的資源玩家需要在遊戲中

華為手機如何實現雙微信登入?隨著社群媒體的興起,微信已成為人們日常生活中不可或缺的溝通工具之一。然而,許多人可能會遇到一個問題:在同一部手機上同時登入多個微信帳號。對於華為手機用戶來說,實現雙微信登入並不困難,本文將介紹華為手機如何實現雙微信登入的方法。首先,華為手機自帶的EMUI系統提供了一個很方便的功能-應用程式雙開。透過應用程式雙開功能,用戶可以在手機上同

字體大小的設定成為了重要的個人化需求,隨著手機成為人們日常生活的重要工具。以滿足不同使用者的需求、本文將介紹如何透過簡單的操作,提升手機使用體驗,調整手機字體大小。為什麼需要調整手機字體大小-調整字體大小可以使文字更清晰易讀-適合不同年齡段用戶的閱讀需求-方便視力不佳的用戶使用手機系統自帶字體大小設置功能-如何進入系統設置界面-在在設定介面中找到並進入"顯示"選項-找到"字體大小"選項並進行調整第三方應用調整字體大小-下載並安裝支援字體大小調整的應用程式-開啟應用程式並進入相關設定介面-根據個人

黃泉光錐能夠在戰鬥中有效的提升角色的爆擊傷害和攻擊力,黃泉推薦的光錐分別是行於流逝的岸、晚安與睡顏、雨一直下、只需等待、決心如汗珠般閃耀,以下小編會為大家帶來崩壞星穹鐵道黃泉光錐推薦。黃泉光錐推薦一、行於流逝的岸1、黃泉專武可以提升爆傷,攻擊敵方可使敵方陷入泡影負面狀態,造成的傷害提高,終結技傷害額外提高,既有負面狀態還有傷害提高,不得不說是專武。 2.專屬光錐在眾多虛無光錐裡很獨特直接對直傷進行加成,有高額的傷害和對暴傷屬性的提升。 3.不僅如此,光錐還提供了一個負面狀態效果,可以使得黃泉本身有反

如何在華為手機上實現微信分身功能隨著社群軟體的普及和人們對隱私安全的日益重視,微信分身功能逐漸成為人們關注的焦點。微信分身功能可以幫助使用者在同一台手機上同時登入多個微信帳號,方便管理和使用。在華為手機上實現微信分身功能並不困難,只需要按照以下步驟操作即可。第一步:確保手機系統版本和微信版本符合要求首先,確保你的華為手機系統版本已更新至最新版本,以及微信App
