亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

lucene復雜數據類型存儲

發布時間:2020-07-20 06:16:17 來源:網絡 閱讀:1738 作者:cychenyong 欄目:軟件技術

Lucene以Field作為key-value存儲單元,Field的value可以為String、int、long、double、float和byte[]存儲,開發過程中往往需要存儲復雜的數據類型,例如List、Map等。下面將會講解如何將復雜的對象轉換為單一的key-value存儲到lucene中。


lucene支持多域值存儲,同一個Document可以存儲多個key相同的Field,簡單理解就是lucene支持key=value和key=[value1,value2]兩種方式存儲。我們需要做的就是將對象轉換為key=value或者key=[value1,value2,...]的格式存儲。


例如,用戶表user的一行數據為

{

    "user_id" : "00000001",

    "user_name": "test1",

    "age":30,

    "sex":1,

    "emails":["test1_1@126.com","test1_2@126.com"],

    "families" : {

        "children" : [

            {

                "name":"son1",

                "age":5,

                "sex":1,

                "birth":"2013-08-08"

            },

            {

                "name":"son2",

                "age":1,

                "sex":1,

                "birth":"2017-01-01"

            }

        ],

        "partner":{

            "name":"wife",

                "age":28,

                "sex":2,

                "birth":"1990-01-01"

        }

    }

    "state":"A",

    "create_time":15648784644,

    "update_time":15648784644

}

這些數據,除了families之外,其他字段可以直接存儲。families本身可以直接轉換為json字符串存儲,但是這樣就無法使用families中的數據過濾條件。例如,查詢children年齡age大于等于5的用戶。可以將families做拆分,轉換為families.children和families.partner存儲。拆分后的key-value為:

user_id="00000001"

user_name="test1"

age=30

sex=1

emails=["test1_1@126.com","test1_2@126.com"]

families.children.name=["son1","son2"]

families.children.age=[5,1]

families.children.sex=[1]

families.children.birth=["2013-08-08","2017-01-01"]

families.partner.name="wife"

families.partner.age=28

families.partner.sex=2

families.partner.birth="1990-01-01"

state="A"

create_time=15648784644

update_time=15648784644


這樣,將一個復雜的對象轉換為了多個key-value存儲。查詢children年齡age大于等于5的用戶只需要設置條件NumericRangeQuery.newIntRange("families.children.age", 5, Integer.MAX_VALUE, true, true)即可。


上面講解的是如何將一個復雜類型拆分為多個Field存儲,如果需要使用lucene存儲數據,可以另外使用列存儲。例如,以"_l"開始表示存儲的json數組,"_m"開始表示存儲的json對象,上面的user對象可以拆分為

user_id="00000001"

user_name="test1"

age=30

sex=1

emails=["test1_1@126.com","test1_2@126.com"]

families.children.name=["son1","son2"]

families.children.age=[5,1]

families.children.sex=[1]

families.children.birth=["2013-08-08","2017-01-01"]

families.partner.name="wife"

families.partner.age=28

families.partner.sex=2

families.partner.birth="1990-01-01"

state="A"

create_time=15648784644

update_time=15648784644

_mfamilies="{\"children\" : [{\"name\":\"son1\",\"age\":5,\"sex\":1,\"birth\":\"2013-08-08\"},{\"name\":\"son2\",\"age\":1,\"sex\":1,\"birth\":\"2017-01-01\"}],\"partner\":{\"name\":\"wife\",\"age\":28,\"sex\":2,\"birth\":\"1990-01-01\"}}"


讀取值時,field.name()包含"."可以直接跳過,_m開頭的field值轉換為map,_l開頭的field值轉換為List。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桑日县| 濉溪县| 万载县| 涟源市| 泰州市| 夹江县| 搜索| 嘉兴市| 瓮安县| 屯门区| 临海市| 福安市| 鱼台县| 神木县| 原平市| 新和县| 葵青区| 佛冈县| 平顶山市| 巫溪县| 巩义市| 呼伦贝尔市| 红原县| 元谋县| 尚志市| 宁武县| 鹰潭市| 富平县| 伊金霍洛旗| 勃利县| 东乡族自治县| 桃江县| 昭苏县| 正镶白旗| 金川县| 治多县| 西城区| 邮箱| 额济纳旗| 五台县| 泽库县|