鍍金池/ 問(wèn)答/Java  網(wǎng)絡(luò)安全/ lucene 檢索做到輸入一個(gè) “甲” 將甲相關(guān)的都檢索出來(lái) 并且如果 有 “

lucene 檢索做到輸入一個(gè) “甲” 將甲相關(guān)的都檢索出來(lái) 并且如果 有 “甲" 這個(gè)字段 那他排到最前

我的索引有三個(gè)字段

Doc1---
名稱:甲苯
別名:無(wú)水甲苯;甲基苯
編號(hào):534-07-6

Doc2---
名稱:甲苯-2,4-二異氰酸酯
別名:2,4-TDI;2,4-二異氰酸甲苯酯;甲苯-2,4-二異氰酸酯;甲苯基-2,4-二異氰酸酯;2,4-二異氰

  酸酯甲苯;甲苯 2,4-二異氰酸酯 

編號(hào):584-84-9

就比如這兩個(gè)字段,我搜“甲苯” 條件是這三個(gè)字段都檢索,那么lucene 的排序是按照檢索得分來(lái)排,那么Doc2得分最多因?yàn)槌霈F(xiàn) ‘甲苯’ 最多所以排在最前,但關(guān)鍵詞是甲苯 ,客戶希望找的就是甲苯 Doc1 問(wèn)題就是如何讓最相似的排在最前。

回答
編輯回答
氕氘氚

你可以在搜索的時(shí)候,利用lucene自帶的通配符匹配搜索,搜索結(jié)果排序的問(wèn)題,在lucene官方的文檔中也有說(shuō)明,我建議你重點(diǎn)看下lucene官方文檔。http://lucene.apache.org/ 這個(gè)是下載地址。

2017年6月25日 00:45
編輯回答
大濕胸

我用solr。
1,可以給不同域設(shè)置不同的域激勵(lì)因子,從而降低因?yàn)榇我虺霈F(xiàn)過(guò)多關(guān)鍵字過(guò)分影響結(jié)果。
2,可以通過(guò)(關(guān)鍵字出現(xiàn)次數(shù)/該域包含單詞數(shù))來(lái)提高doc1的排序。 具體操作你再查查。

2018年1月13日 07:13
編輯回答
喜歡你

生成索引時(shí)加上: document.setBoost(100); //自定義評(píng)分,如100
查詢時(shí)使用: org.apache.lucene.search.function.FieldScoreQuery;

2017年7月29日 20:03