官术网_书友最值得收藏!

3.2.8 靈活索引

以前,可以通過聲明列屬性來說明是否存儲詞在文檔中的位置信息,如Field.TermVector.WITH_POSITIONS_OFFSETS。但這樣的方式不夠靈活,需要能夠用任意有效的組合來說明倒排索引中存什么內容。例如,有時候也許并不關心詞在文檔中出現了多少次。有下面4種有效的索引格式:

(1) <doc>+

(2) <doc, boost>+

(3) <doc, freq, <position>+ >+

(4) <doc, freq, <position, boost>+ >+

例如可以只存文檔編號,如(1)所示;或者還附加文檔的加權信息,如(2)所示;或者還存儲位置信息,如(3)所示;或者給不同位置的詞設置不同的加權,如(4)所示。

這要求每個列設置如下的布爾值:

(1) freq。

(2) document boost。

(3) position (要求頻率)。

(4) position boost (要求位置)。

索引選項枚舉類型定義如下:

        public static enum IndexOptions {
            DOCS_ONLY,  //僅索引文檔
            DOCS_AND_FREQS,  //索引文檔和頻率
            DOCS_AND_FREQS_AND_POSITIONS,  //索引文檔、頻率和詞的位置
            DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS, //索引文檔、頻率、詞的位置
        //以及字符偏移量
        };

可以在設置列類型的時候設置索引選項。

        FieldType fieldType = new FieldType();
        fieldType.setStoreTermVectors(true);
        fieldType.setStoreTermVectorPositions(true);
        fieldType.setIndexed(true);
        fieldType.setIndexOptions(IndexOptions.DOCS_AND_FREQS); //索引文檔和頻率
        fieldType.setStored(true);
        Document doc = new Document();
        doc.add(new Field("content", content, fieldType));

對于寫入索引,如何寫入很重要。應用程序應該可以很容易地存儲新的東西到索引。或者更改現有東西的編碼,例如更改文檔編號、位置、payloads等的編碼方式。

主站蜘蛛池模板: 蒙城县| 岚皋县| 谷城县| 札达县| 特克斯县| 东宁县| 吉木乃县| 墨竹工卡县| 龙口市| 乌兰浩特市| 尚义县| 普格县| 阜康市| 呼图壁县| 呼玛县| 措美县| 赣榆县| 安化县| 中卫市| 吉林市| 南漳县| 聊城市| 商城县| 遂川县| 当雄县| 柏乡县| 彰武县| 武宁县| 竹山县| 大关县| 扶风县| 深圳市| 泊头市| 化隆| 南郑县| 湘潭市| 金坛市| 铁力市| 望城县| 二连浩特市| 嘉兴市|