solr入门之參考淘宝搜索提示功能优化拼音加汉字搜索功能
生活随笔
收集整理的這篇文章主要介紹了
solr入门之參考淘宝搜索提示功能优化拼音加汉字搜索功能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先看一下從淘寶輸入搜索keyword獲取到的一些數據信息:
第二使用首字母來匹配 這里看不出來 淘寶的東西太多了,首字母直接有了相應的全程
第三使用切斷字母的匹配 看的出來 走的還是全然匹配的路徑
第四使用漢字匹配的方法 : ?這個沒得說的 這是主功能了
第五使用 拼音加漢字的方式: 可以匹配到 使用所有的拼音時 這里能看出來是使用了轉換的方法了 先將漢字轉為拼音 在去匹配
第六 這里使用部分 ?這個沒啥問題 轉成拼音后 ?shouta*
第七 這里應該是先轉成拼音 為 stao 看以下一張圖搜索結果是吻合的,可是結果太少了, 這里淘寶因該使用了另外的搜索機制了.假設這樣的方法搜索到的數量不夠,那么就使用查詢模式 即 再放一個分詞的字段用來查詢, 我想是分成一個一個的模式 也就是搜索 s 套了 這里不須要考慮順序了 詞中含有這兩個就能夠了 就是以下的結果了
這里和上面說的是一個道理 從這里 大家應按能猜出來 搜索shtao是沒有結果的,能夠驗證下 假設有興趣
這里看到沒有提示結果,就是沒有了 依照推測出來的兩種搜索方式
淘寶處理 對于拼音加漢字問題 應該是使用了雙重查詢 ,保證漢字是正確匹配的(應該使用的是當個分詞字段) 然后再進行漢字轉為拼音后的過濾,
學到一點解決拼音加漢字搜索建議的解決方法 新加入一個字段使用全然分詞模式即 分成一個 一個 用來做漢字匹配過濾查詢 然后再用漢字轉拼音查詢 ?當數量不夠時再使用一次檢索查詢 含有keyword就可以 不要求位置在首位
以下是自己的搜索建議改造拼音加漢字的改寫
1.加入一個漢字單個分詞的字段 schema.xml中配置 <fieldtype?name="ng1_1"?class="solr.TextField"?positionIncrementGap="100"> <analyzer> <tokenizer?class="solr.NGramTokenizerFactory"?minGramSize="1"?maxGramSize="1"/> <filter?class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldtype> <!--?單個分詞?保證漢字正確性--> <field?name="word_n1"?type="ng1_1"?indexed="true"?stored="false"/> <copyField?source="word"?dest="word_n1"/>
2.代碼中加入過濾部分 //這里加入過濾--要包括的漢字--使用filter添加查詢速度 if(StringFilterUtils.filterAll(q)!=null?&&?StringFilterUtils.filterAll(q).trim().length()>0){ query.set(CommonParams.FQ,?BaseSuggestIndex.Fd.word_n1.name()+":"+StringFilterUtils.filterAll(q).trim()); }
對照搜索條件
未優化前
優化后
能夠發現漢字輸入不對,就不能出來提示了 以下是一些輸入正確的出來的結果
轉載于:https://www.cnblogs.com/gccbuaa/p/7306195.html
總結
以上是生活随笔為你收集整理的solr入门之參考淘宝搜索提示功能优化拼音加汉字搜索功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【前端】JavaScript
- 下一篇: Matlab变量、分支语句和循环语句