亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Lucene 4 setBoost 異常

Lucene 4 setBoost 異常

慕的地6264312 2019-04-07 11:19:25
在構建文檔時,給字段setBoost爆異常:java.lang.IllegalArgumentException:Youcannotsetanindex-timeboostonanunindexedfield,oronethatomitsnorms代碼為:Documentdoc=newDocument();Fieldf=newFloatField("x",10.0,Field.Store.YES);f.setBoost(10.0);doc.add(f);Lucene版本4.6.0,求指教!
查看完整描述

2 回答

?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

FieldTypefieldType=newFieldType(StringField.TYPE_STORED);
fieldType.setOmitNorms(false);
FieldcountryField=newField("country",country,getNormStringField());
countryField.setBoost("China".equals(country)?5f:1f);
FloatField是不支持setBoost的。需要創建自定義的FieldType
                            
查看完整回答
反對 回復 2019-04-07
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

總算搞清楚點了,不能在omitNorms的字段上setBoost,而Lucene4.x的StringField,StoredField,IntField等都是omitNorms的,我測試發現只有TextField是非omitNorms的,故可以在TextFields上setBoost。
現在有個新的問題,給其中一個字段設置了boost,但如果條件里沒有這個字段,順序就沒任何變化。而4.x的Document上并沒有setBoost方法。
剛實踐了一個好辦法,添加了一個TextField且所有索引記錄的這個字段的值都是一個相同的字,然后在這個字段上setBoost,在查詢條件上默認的加上這個字段的查詢,關系是SHOULD,就能實現按打分+相關度共同排序了。
                            
查看完整回答
反對 回復 2019-04-07
  • 2 回答
  • 0 關注
  • 390 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號