簡體   English   中英

文檔字段setBoost中的lucene錯誤

[英]lucene error in document field setBoost

如lucene遷移指南所述,要設置文檔級別提升,我們應將所有字段提升值乘以提升值。 這是我的代碼:

    StringField nameField = new StringField("name", name, Field.Store.YES) ;
    StringField linkField = new StringField("link", link, Field.Store.YES);
    Field descField;
    TextField reviewsField = new TextField("reviews", reviews_str, Field.Store.YES);
    TextField authorsField = new TextField("authors", authors_str, Field.Store.YES);        
    FloatField scoreField = new FloatField("score", origScore,Field.Store.YES);
    if (desc != null) {
        descField = new TextField("desc", desc, Field.Store.YES);
    } else {
        descField = new TextField("desc", "", Field.Store.YES);
    }


    doc.add(nameField);
    doc.add(linkField);
    doc.add(descField);
    doc.add(reviewsField);
    doc.add(authorsField);
    doc.add(scoreField);


    nameField.setBoost(score);
    linkField.setBoost(score);
    descField.setBoost(score);
    reviewsField.setBoost(score);
    authorsField.setBoost(score);
    scoreField.setBoost(score);

但是我在運行代碼時遇到了這個異常:

Exception in thread "main" java.lang.IllegalArgumentException: You cannot set an index-time boost on an unindexed field, or one that omits norms

我搜索過谷歌。 但我沒有答案。 你能幫我嗎?

索引時間提升存儲在字段的規范中,默認情況下,StringField和FloatField都忽略規范。 因此,您需要在設置增強之前將它們打開。

要打開規范,您需要定義自己的字段類型:

//Start with a copy of the standard field type
FieldType myStringType = new FieldType(StringField.TYPE_STORED);
myStringType.setOmitNorms(false);
//StringField doesn't do anything special except have a customized fieldtype, so just use Field.
Field nameField = new Field("name", name, myStringType);

FieldType myFloatType = new FieldType(FloatField.TYPE_STORED);
myFloatType.setOmitNorms(false);
//For FloatField, use the appropriate FloatField ctor, instead of Field (similar for other numerics)
Field scoreField = new FloatField("score", origScore, myFloatType);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM