基于SQL語(yǔ)言的solr查詢(xún)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明實(shí)施例設(shè)及數(shù)據(jù)查詢(xún)技術(shù)領(lǐng)域,尤其設(shè)及一種基于S化語(yǔ)言的solr查詢(xún)方 法及裝置。
【背景技術(shù)】
[0002]Solr是一個(gè)獨(dú)立的企業(yè)級(jí)捜索應(yīng)用服務(wù)器,它對(duì)外提供類(lèi)似于Web-service的 API接口。用戶(hù)可W通過(guò)超文本傳輸協(xié)議(Hype;rTexthansferProtocol,http)請(qǐng)求,向 捜索引擎服務(wù)器提交一定格式的可擴(kuò)展標(biāo)記語(yǔ)言巧xtensibleMarkupLanguage,XML)文 件或輕量級(jí)的數(shù)據(jù)交換格式(JavaScriptObjectNotation,JS0N)文件,生成索引;也可W 通過(guò)httpget操作提出查找請(qǐng)求,并得到XML或JS0N格式的返回結(jié)果。
[0003] 而結(jié)構(gòu)化查詢(xún)語(yǔ)言(Struc化red如eryLanguage,SQL)作為一種通用的數(shù)據(jù)庫(kù)查 詢(xún)語(yǔ)言,它有著規(guī)范的國(guó)際標(biāo)準(zhǔn)和廣泛的用戶(hù)群體,是數(shù)據(jù)庫(kù)領(lǐng)域或數(shù)據(jù)檢索領(lǐng)域用戶(hù)必 須掌握的一項(xiàng)技術(shù)。而針對(duì)查詢(xún)請(qǐng)求,solr自定義了一套語(yǔ)法,來(lái)描述solr查詢(xún)條件。運(yùn) 就迫使用戶(hù)必須先學(xué)習(xí)solr的語(yǔ)法,然后才能通過(guò)solr進(jìn)行數(shù)據(jù)檢索,增加了solr的使 用成本。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實(shí)施例提供一種基于S化語(yǔ)言的solr查詢(xún)方法及裝置,能夠根據(jù)S化語(yǔ)言 進(jìn)行solr查詢(xún),降低solr的使用成本。
[0005] 第一方面,本發(fā)明實(shí)施例提供了一種基于S化語(yǔ)言的solr查詢(xún)方法,包括:
[0006] 根據(jù)預(yù)定規(guī)則將采用S化語(yǔ)言編寫(xiě)的S化查詢(xún)語(yǔ)句轉(zhuǎn)換為采用solr語(yǔ)言編寫(xiě)的 solr查詢(xún)語(yǔ)句;
[0007] 將所述solr查詢(xún)語(yǔ)句傳送到solr服務(wù)器,W使所述solr服務(wù)器進(jìn)行查詢(xún);
[0008] 接收所述solr服務(wù)器返回的查詢(xún)結(jié)果。
[0009] 第二方面,本發(fā)明實(shí)施例還提供一種基于S化語(yǔ)言的solr查詢(xún)裝置,包括:
[0010] 查詢(xún)語(yǔ)句轉(zhuǎn)換模塊,用于根據(jù)預(yù)定規(guī)則將采用S化語(yǔ)言編寫(xiě)的S化查詢(xún)語(yǔ)句轉(zhuǎn)換 為采用solr語(yǔ)言編寫(xiě)的solr查詢(xún)語(yǔ)句;
[0011] 查詢(xún)模塊,用于將所述solr查詢(xún)語(yǔ)句傳送到solr服務(wù)器,W使所述solr服務(wù)器 進(jìn)行查詢(xún);
[0012] 查詢(xún)結(jié)果接收模塊,用于接收所述solr服務(wù)器返回的查詢(xún)結(jié)果。
[0013] 本發(fā)明實(shí)施例通過(guò)根據(jù)預(yù)定規(guī)則將采用S化語(yǔ)言編寫(xiě)的S化查詢(xún)語(yǔ)句轉(zhuǎn)換為采用 solr語(yǔ)言編寫(xiě)的solr查詢(xún)語(yǔ)句;將所述solr查詢(xún)語(yǔ)句傳送到solr服務(wù)器,W使所述solr 服務(wù)器進(jìn)行查詢(xún);接收所述solr服務(wù)器返回的查詢(xún)結(jié)果。本發(fā)明實(shí)施例能夠根據(jù)S化語(yǔ)言 進(jìn)行solr查詢(xún),降低solr的使用成本。
【附圖說(shuō)明】
[0014] 圖1為本發(fā)明實(shí)施例一提供的基于S化語(yǔ)言的solr查詢(xún)方法的流程示意圖;
[0015] 圖2A為本發(fā)明實(shí)施例二提供的基于S化語(yǔ)言的solr查詢(xún)方法的流程示意圖;
[0016] 圖2B為本發(fā)明實(shí)施例二提供的基于S化語(yǔ)言的solr查詢(xún)方法中的S化語(yǔ)法樹(shù)結(jié) 構(gòu)示意圖;
[0017] 圖2C為本發(fā)明實(shí)施例二提供的基于S化語(yǔ)言的solr查詢(xún)方法中的solr語(yǔ)法樹(shù) 結(jié)構(gòu)示意圖;
[0018] 圖3為本發(fā)明實(shí)施例S提供的基于S化語(yǔ)言的solr查詢(xún)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0019] 下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明??蒞理解的是,此處所描 述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說(shuō)明的是,為了便 于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
[0020] 本發(fā)明實(shí)施例提供的基于S化語(yǔ)言的solr查詢(xún)方法的執(zhí)行主體,可為本發(fā)明實(shí)施 例提供的基于S化語(yǔ)言的solr查詢(xún)裝置,或集成了基于S化語(yǔ)言的solr查詢(xún)裝置的終端 設(shè)備(例如,平板電腦和移動(dòng)終端等),該基于S化語(yǔ)言的solr查詢(xún)裝置可W采用硬件或軟 件實(shí)現(xiàn)。
[0021] 實(shí)施例一
[0022] 圖1為本發(fā)明實(shí)施例一提供的基于S化語(yǔ)言的solr查詢(xún)方法的流程示意圖,如圖 1所示,具體包括:
[0023] 步驟11、根據(jù)預(yù)定規(guī)則將采用S化語(yǔ)言編寫(xiě)的S化查詢(xún)語(yǔ)句轉(zhuǎn)換為采用solr語(yǔ)言 編寫(xiě)的solr查詢(xún)語(yǔ)句;
[0024] 其中,預(yù)定規(guī)則包含了由S化語(yǔ)言到solr語(yǔ)言的語(yǔ)句或參數(shù)之間的映射關(guān)系。根 據(jù)該映射關(guān)系即可將S化查詢(xún)語(yǔ)句轉(zhuǎn)換為solr查詢(xún)語(yǔ)句。
[002引步驟12、將所述solr查詢(xún)語(yǔ)句傳送到solr服務(wù)器,W使所述solr服務(wù)器進(jìn)行查 詢(xún);
[002引其中,Solr是一個(gè)獨(dú)立的企業(yè)級(jí)捜索應(yīng)用服務(wù)器,它對(duì)外提供類(lèi)似于Web-service的API接口。所述solr查詢(xún)語(yǔ)句由查詢(xún)參數(shù)組成。因此,通過(guò)API接口可將 solr查詢(xún)參數(shù)傳送到solr服務(wù)器,所述solr服務(wù)器根據(jù)solr查詢(xún)參數(shù)即可進(jìn)行查詢(xún),并 返回查詢(xún)結(jié)果。
[0027] 步驟13、接收所述solr服務(wù)器返回的查詢(xún)結(jié)果。
[0028] 本實(shí)施例通過(guò)根據(jù)預(yù)定規(guī)則將采用S化語(yǔ)言編寫(xiě)的S化查詢(xún)語(yǔ)句轉(zhuǎn)換為采用solr 語(yǔ)言編寫(xiě)的solr查詢(xún)語(yǔ)句;將所述solr查詢(xún)語(yǔ)句傳送到solr服務(wù)器,W使所述solr服務(wù) 器進(jìn)行查詢(xún);接收所述solr服務(wù)器返回的查詢(xún)結(jié)果。本實(shí)施例能夠?qū)⒂脩?hù)熟悉的S化語(yǔ)言 轉(zhuǎn)換不了解的solr語(yǔ)言進(jìn)行查詢(xún),從而降低了solr的使用成本。
[0029] 示例性的,在上述實(shí)施例的基礎(chǔ)上,根據(jù)預(yù)定規(guī)則將采用S化語(yǔ)言編寫(xiě)的S化查詢(xún) 語(yǔ)句轉(zhuǎn)換為采用solr語(yǔ)言編寫(xiě)的solr查詢(xún)語(yǔ)句包括:
[0030] 根據(jù)預(yù)先定義的語(yǔ)法樹(shù)生成規(guī)則生成S化語(yǔ)法樹(shù);
[0031] 根據(jù)S化查詢(xún)語(yǔ)法和solr查詢(xún)語(yǔ)法的映射關(guān)系,將S化語(yǔ)法樹(shù)轉(zhuǎn)換為solr語(yǔ)法 樹(shù);
[0032] 根據(jù)所述solr語(yǔ)法樹(shù)生成solr查詢(xún)語(yǔ)句。
[0033] 示例性的,所述根據(jù)預(yù)先定義的語(yǔ)法樹(shù)生成規(guī)則生成S化語(yǔ)法樹(shù)之前還包括:
[0034] 根據(jù)預(yù)先定義的詞法規(guī)則和語(yǔ)法規(guī)則對(duì)所述S化查詢(xún)語(yǔ)句進(jìn)行解析;
[0035] 對(duì)于滿(mǎn)足詞法規(guī)則和語(yǔ)法規(guī)則的S化查詢(xún)語(yǔ)句,觸發(fā)執(zhí)行生成S化語(yǔ)法樹(shù)的操作。
[0036] 具體的,根據(jù)預(yù)定規(guī)則將采用S化語(yǔ)言編寫(xiě)的S化查詢(xún)語(yǔ)句轉(zhuǎn)換為采用solr語(yǔ)言 編寫(xiě)的solr查詢(xún)語(yǔ)句主要包括W下S個(gè)過(guò)程:第一個(gè)過(guò)程,首先對(duì)輸入的S化查詢(xún)語(yǔ)句進(jìn) 行詞法分析,即根據(jù)預(yù)定義的詞法規(guī)則(可在sqlLexer.g文件中定義)進(jìn)行詞法分析,檢 驗(yàn)輸入的S化查詢(xún)語(yǔ)句是否滿(mǎn)足詞法規(guī)則;第二個(gè)過(guò)程,對(duì)輸入的S化查詢(xún)語(yǔ)句進(jìn)行語(yǔ)法分 析,即根據(jù)預(yù)定義的語(yǔ)法規(guī)則(可在sqlParser.g文件中定義)進(jìn)行語(yǔ)法分析,檢驗(yàn)輸入的 S化查詢(xún)語(yǔ)句是否滿(mǎn)足語(yǔ)法規(guī)則;第=個(gè)過(guò)程,生成S化語(yǔ)法樹(shù),即對(duì)于滿(mǎn)足詞法規(guī)則和語(yǔ) 法規(guī)則的S化查詢(xún)語(yǔ)句,根據(jù)預(yù)定義的語(yǔ)法樹(shù)生成規(guī)則(可在sqlParser.g文件中定義) 生成S化語(yǔ)法樹(shù)。
[0037] 示例性的,在上述實(shí)施例的基礎(chǔ)上,所述S化查詢(xún)語(yǔ)句包括select子句、化om子 句、where子句、group子句、order子句和page子句中的至少兩種,且select子句和from 子句是所述S化查詢(xún)語(yǔ)句必須包括的兩個(gè)子句。
[0038] 具體的,select子句定義需要查詢(xún)返回的字段;化om子句定義需要查詢(xún)的表; where子句定義查詢(xún)中篩選條件;group子句定義查詢(xún)分組的字段;order子句定義查詢(xún)結(jié) 果排序的規(guī)則;page子句定義查詢(xún)結(jié)果分頁(yè)的起始位置和返回行數(shù)。
[0039] 示例性的,在上述實(shí)施例的基礎(chǔ)上,所述solr查詢(xún)語(yǔ)句包括fl參數(shù)、collections 參數(shù)、q參數(shù)、sod參數(shù)、start參數(shù)、rows參數(shù)和化cet參數(shù)中的至少兩種,且collections 參數(shù)和q參數(shù)是所述solr查詢(xún)語(yǔ)句必須包括的兩個(gè)參數(shù)。
[0040] 具體的,fl參數(shù)是solr查詢(xún)需要返回的字段;collections參數(shù)是solr查詢(xún)的文 檔集合;q參數(shù)是solr查詢(xún)中的篩選條件;scxrt參數(shù)是solr查詢(xún)中的排序規(guī)則;start參 數(shù)是solr查詢(xún)中返回結(jié)果的起始位置;rows參數(shù)是solr查詢(xún)中返回結(jié)果的行數(shù);facet參 數(shù)是solr查詢(xún)中分組的字段。
[0041] 上述各實(shí)施例同樣通過(guò)根據(jù)預(yù)定規(guī)則將采用S化語(yǔ)言編寫(xiě)的S化查詢(xún)語(yǔ)句轉(zhuǎn)換為 采用solr語(yǔ)言編寫(xiě)的solr查詢(xún)語(yǔ)句;將所述solr查詢(xún)語(yǔ)句傳送到solr服務(wù)器,W使所述 solr服務(wù)器進(jìn)行查詢(xún);接收所述solr服務(wù)器返回的查詢(xún)結(jié)果。上述各實(shí)施例同樣能夠?qū)?用戶(hù)熟悉的S化語(yǔ)言轉(zhuǎn)換不了解的solr語(yǔ)言進(jìn)行查詢(xún),從而降低了solr的使用成本。 [004引 實(shí)施例二
[0043] 圖2A為本發(fā)明實(shí)施例二提供的基于S化語(yǔ)言的solr查詢(xún)方法的流程示意圖,本 實(shí)施例為一優(yōu)選實(shí)施例,用來(lái)詳細(xì)說(shuō)明本發(fā)明的技術(shù)方案,如圖2A所示,具體包括:
[0044] 步驟21、根據(jù)預(yù)先定義的詞法規(guī)則、語(yǔ)法規(guī)則和語(yǔ)法樹(shù)生成規(guī)則將S化查詢(xún)語(yǔ)句 轉(zhuǎn)換為S化語(yǔ)法樹(shù);
[0045] 具體的,本實(shí)施例可利用開(kāi)源語(yǔ)法分析器antlr來(lái)定義詞法規(guī)則、語(yǔ)法規(guī)則和語(yǔ) 法樹(shù)生成規(guī)則,將S化查詢(xún)語(yǔ)句分割為多個(gè)子句:select子句、化om子句、where子句、 邑roupforderf芽口pa邑ef
[0046] 步驟22、將S化語(yǔ)法樹(shù)轉(zhuǎn)換為s