lucene 多个分词查找_使用Lucene的新FreeTextSuggester查找长尾建议
lucene 多個(gè)分詞查找
Lucene的“ 建議”模塊提供了許多有趣的自動(dòng)建議實(shí)現(xiàn),以便在用戶將每個(gè)字符輸入搜索框時(shí)為他們提供實(shí)時(shí)搜索建議。
例如, WFSTCompletionLookup將所有建議及其權(quán)重編譯到一個(gè)緊湊的有限狀態(tài)傳感器中 ,從而可以對(duì)基本建議進(jìn)行快速前綴查找。
AnalyzingSuggester使用Analyzer對(duì)建議和用戶查詢進(jìn)行規(guī)范化, Analyzer對(duì)此進(jìn)行了改進(jìn),以使Analyzer確定的空白,大小寫,停用詞,同義詞等瑣碎的差異不會(huì)阻止建議的匹配。
最后, AnalyzingInfixSuggester允許綴相匹配,以便每個(gè)建議(不只是前綴)內(nèi)部的話可以觸發(fā)匹配更進(jìn)一步。 您可以在我最近創(chuàng)建的Lucene / Solr Jira搜索應(yīng)用程序 (例如嘗試“ python”)中看到這一動(dòng)作, 該動(dòng)作可以吃我們自己的狗糧 。 這也是迄今為止唯一支持突出顯示的建議程序?qū)崿F(xiàn)( 事實(shí)證明 ,這對(duì)其他建議程序具有挑戰(zhàn)性 )。
但是,所有這些建議者的共同限制是,他們只能從有限的先前構(gòu)建的建議集中提出建議。 如果您的建議是過去的用戶查詢,并且您有很多建議(例如,您是Google),那么這可能不是問題。 另外,如果您的建議天生就是封閉的,例如Netflix搜索將建議的電影和電視節(jié)目名稱,或電子商務(wù)網(wǎng)站上的所有產(chǎn)品名稱,則建議使用一組封閉的建議。
N-Gram語言模型
對(duì)于其他所有人,其中大部分傳入查詢都落入了前所未有的長(zhǎng)尾巴中 ,Lucene的最新建議者FreeTextSuggester可以為您提供幫助! 它使用此Google博客文章中描述的方法。
與其精確地匹配先前的建議,不如從所有建議中構(gòu)建一個(gè)簡(jiǎn)單的統(tǒng)計(jì)n-gram語言模型 ,并查看最后的標(biāo)記(加上用戶鍵入的任何最終標(biāo)記的前綴,如果存在),以預(yù)測(cè)最可能的下一個(gè)標(biāo)記令牌。
例如,到目前為止,用戶的查詢可能是:“ flashforge 3d p”,并且由于flashforge是3D打印機(jī)的罕見品牌,因此從未向建議者添加此特定建議前綴。 但是,“ 3d打印機(jī)”在其他情況下(不同品牌)是一個(gè)經(jīng)常出現(xiàn)的短語。 在這種情況下,即使從未明確添加“ flashforge 3d打印機(jī)”作為建議, FreeTextSuggester仍將為下一個(gè)標(biāo)記看到“ 3d”和“ p”前綴并預(yù)測(cè)打印機(jī)。
創(chuàng)建建議者時(shí),您可以指定模型的順序(N):N的值越大,需要更多的數(shù)據(jù)來進(jìn)行正確訓(xùn)練,但可以做出更準(zhǔn)確的預(yù)測(cè)。 還構(gòu)建了所有低階模型,因此,如果指定N = 3,則將得到三字母組,雙字母組和單字母組,它們?nèi)烤幾g為單個(gè)加權(quán)FST,以最大程度地共享文本令牌。 當(dāng)然,更大的N將創(chuàng)建更大的FST。 在實(shí)踐中,N = 3是您應(yīng)該采取的最高方法,除非您有大量的建議要訓(xùn)練,并且RAM擁有大量的結(jié)果以保持FST。
為了處理稀疏數(shù)據(jù),在給定上下文(前N-1個(gè)單詞)的出現(xiàn)頻率不足以做出準(zhǔn)確的預(yù)測(cè)的情況下,建議者使用愚蠢的退避語言模型 (是的,這確實(shí)是它的名字,是的,它的表現(xiàn)很好!)。
我希望使用此新的FreeTextSuggester的最佳方法將是回退:您將首先使用現(xiàn)有的完全匹配建議者之一,但是當(dāng)這些建議者找不到給定查詢的任何建議時(shí),因?yàn)樗安粚こ!鼻乙呀徊鎻拈L(zhǎng)尾巴上FreeTextSuggester ,然后又回到FreeTextSuggester 。
谷歌似乎用這樣的模式方法的建議,以及:如果鍵入“flashforge 3D P”你應(yīng)該看到這樣的事情,其中每個(gè)建議涵蓋整個(gè)查詢到目前為止(事實(shí)上,谷歌已經(jīng)聽到了flashforge品牌的3D打印機(jī)!):
但是,如果您繼續(xù)輸入并輸入“ flashforge 3d打印機(jī)電源u”,則建議會(huì)發(fā)生變化:Google不會(huì)建議一個(gè)完整的查詢,而是匹配我鍵入的所有內(nèi)容,而是建議最后一兩個(gè)字:
與往常一樣,此功能是非常新的功能,可能包含令人興奮的錯(cuò)誤! 有關(guān)詳細(xì)信息, 請(qǐng)參見Jira問題LUCENE-5214 。 如果您使用這個(gè)新的建議者,請(qǐng)?jiān)贚ucene的用戶列表上開始討論!
翻譯自: https://www.javacodegeeks.com/2014/01/finding-long-tail-suggestions-using-lucenes-new-freetextsuggester.html
lucene 多個(gè)分詞查找
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的lucene 多个分词查找_使用Lucene的新FreeTextSuggester查找长尾建议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 星期一用英语怎么说 星期一的英文是什么
- 下一篇: 带有NetBeans 10的Java E