真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

lucene復(fù)雜數(shù)據(jù)類型存儲(chǔ)

Lucene以Field作為key-value存儲(chǔ)單元,F(xiàn)ield的value可以為String、int、long、double、float和byte[]存儲(chǔ),開發(fā)過程中往往需要存儲(chǔ)復(fù)雜的數(shù)據(jù)類型,例如List、Map等。下面將會(huì)講解如何將復(fù)雜的對(duì)象轉(zhuǎn)換為單一的key-value存儲(chǔ)到lucene中。

在威信等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,威信網(wǎng)站建設(shè)費(fèi)用合理。

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

例如,用戶表user的一行數(shù)據(jù)為

{

    "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

}

這些數(shù)據(jù),除了families之外,其他字段可以直接存儲(chǔ)。families本身可以直接轉(zhuǎn)換為json字符串存儲(chǔ),但是這樣就無法使用families中的數(shù)據(jù)過濾條件。例如,查詢children年齡age大于等于5的用戶。可以將families做拆分,轉(zhuǎn)換為families.children和families.partner存儲(chǔ)。拆分后的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

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

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

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\"}}"

讀取值時(shí),field.name()包含"."可以直接跳過,_m開頭的field值轉(zhuǎn)換為map,_l開頭的field值轉(zhuǎn)換為L(zhǎng)ist。


名稱欄目:lucene復(fù)雜數(shù)據(jù)類型存儲(chǔ)
文章鏈接:http://weahome.cn/article/joeceh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部