數據搜索方法、裝置、電子設備及計算機可讀存儲介質與流程
2024-04-14 22:51:05
1.本發明涉及數據搜索領域,具體而言,涉及一種數據搜索方法、裝置、電子設備及計算機可讀存儲介質。
背景技術:
2.目前,針對資料庫中數據的常用搜索/查詢方法是:用戶在前端頁面輸入查詢參數,並選擇查詢參數對應的類型,再向後端發起查詢該查詢參數的請求,後端接收到類型以及查詢參數,驗證查詢參數通過之後,再生成查詢語句,基於該查詢語句進行查詢。
3.但是,使用這種搜索方法進行查詢時,需要用戶手動選擇查詢參數對應的類型,極易因用戶選擇的類型錯誤而導致搜索錯誤,導致搜索準確度低,且靈活性差。
技術實現要素:
4.有鑑於此,本發明的目的在於提供一種數據搜索方法、裝置、電子設備及計算機可讀存儲介質,其能夠改善目前的搜索方法所存在的搜索準確度低,且靈活性差的問題。
5.為了實現上述目的,本發明實施例採用的技術方案如下:
6.第一方面,本發明實施例提供一種數據搜索方法,所述方法包括:
7.接收客戶端發送的搜索字符串,對所述搜索字符串進行解析,得到數組;其中,所述數組包括多個欄位組,每個所述欄位組包括所述搜索字符串的一個搜索值;
8.將所述數組中的每個所述欄位組,與預設的過濾器庫中的過濾器進行匹配,確定與所述欄位組匹配的過濾器;
9.針對每個所述欄位組,根據所述欄位組匹配的過濾器,對所述欄位組中的搜索值進行校驗,並在校驗通過後生成所述欄位組的查詢語句;
10.基於各所述欄位組對應的查詢語句,得到目標查詢語句。
11.進一步地,每個所述過濾器包括數據類型和數據校驗函數;
12.所述根據所述欄位組匹配的過濾器,對所述欄位組中的搜索值進行校驗的步驟,包括:
13.使用所述過濾器中的數據校驗函數,校驗所述欄位組中的搜索值是否為所述過濾器中的數據類型,若是,則所述搜索值校驗通過。
14.進一步地,每個所述過濾器還包括查詢語句生成函數;
15.所述生成所述欄位組的查詢語句的步驟,包括:
16.確定所述欄位組中所述搜索值的搜索類型,其中,所述搜索類型包括全文搜索、術語搜索、模糊搜索和短語搜索;
17.利用所述過濾器中的查詢語句生成函數,結合所述搜索類型對應的搜索匹配函數,生成所述欄位組的查詢語句。
18.進一步地,所述方法還包括:
19.採用所述目標查詢語句,在目標資料庫中進行搜索,得到查詢結果,並將所述查詢
結果返回至所述客戶端。
20.進一步地,所述搜索字符串為根據搜索語法進行編寫而成;
21.所述對所述搜索字符串進行解析,得到數組的步驟,包括:
22.基於所述搜索語法對應的數據結構,對所述搜索字符串進行解析,得到數組。
23.進一步地,所述基於各所述欄位組對應的查詢語句,得到目標查詢語句的步驟,包括:
24.對所述搜索字符串進行解析,得到各所述欄位組之間的組合條件;
25.根據各所述欄位組之間的組合條件,將各所述欄位組的查詢語句組合,得到目標查詢語句。
26.進一步地,所將所述數組中的每個所述欄位組,與預設的過濾器庫中的過濾器進行匹配,確定與所述欄位組匹配的過濾器的步驟,包括:
27.針對所述數組中的每個所述欄位組,判斷所述欄位組中是否存在關鍵字;
28.若所述欄位組中存在關鍵字,則使用所述關鍵字與預設的過濾器庫中的過濾器進行匹配,確定出與所述關鍵字匹配的過濾器;
29.若所述欄位組中不存在關鍵字,則從預設的過濾器庫中確定出支持全文檢索的過濾器,作為所述欄位組匹配的過濾器。
30.第二方面,本發明實施例提供一種數據搜索裝置,包括解析模塊、匹配模塊和查詢生成模塊;
31.所述解析模塊,用於接收客戶端發送的搜索字符串,對所述搜索字符串進行解析,得到數組;其中,所述數組包括多個欄位組,每個所述欄位組包括所述搜索字符串的一個搜索值;
32.所述匹配模塊,用於將所述數組中的每個所述欄位組,與預設的過濾器庫中的過濾器進行匹配,確定與所述欄位組匹配的過濾器;
33.所述查詢生成模塊,用於針對每個所述欄位組,根據所述欄位組匹配的過濾器,對所述欄位組中的搜索值進行校驗,並在校驗通過後生成所述欄位組的查詢語句;
34.所述查詢生成模塊,還用於基於各所述欄位組對應的查詢語句,得到目標查詢語句。
35.第三方面,本發明實施例提供一種電子設備,包括處理器和存儲器,所述存儲器存儲有能夠被所述處理器執行的電腦程式,所述處理器可執行所述電腦程式以實現如第一方面所述的數據搜索方法。
36.第四方面,本發明實施例提供一種計算機可讀存儲介質,其上存儲有電腦程式,所述電腦程式被處理器執行時實現如第一方面述的數據搜索方法。
37.本發明實施例提供的數據搜索方法、裝置、電子設備及計算機可讀存儲介質,通過對客戶端發送的搜索字符串進行解析,得到數組,對數組中的每個欄位組,從預設的過濾器庫中確定與該欄位組匹配的過濾器,從而採用與欄位組匹配的過濾器對欄位組中的搜索值進行校驗,在校驗通過後生成該欄位組的查詢語句,進而基於數組中各欄位組對應的查詢語句,得到目標查詢語句,實現根據搜索字符串自動生成更為準確的目標查詢語句,用戶無需選擇類型,在一定程度上能夠避免用戶人為選擇類型導致的錯誤,以極大地提高搜索準確度,並能夠改善靈活性差的問題。
38.為使本發明的上述目的、特徵和優點能更明顯易懂,下文特舉較佳實施例,並配合所附附圖,作詳細說明如下。
附圖說明
39.為了更清楚地說明本發明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發明的某些實施例,因此不應被看作是對範圍的限定,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他相關的附圖。
40.圖1示出了本發明實施例提供的數據搜索系統的方框示意圖。
41.圖2示出了本發明實施例提供的數據搜索方法的流程示意圖之一。
42.圖3示出了本發明實施例提供的數據搜索方法的流程示意圖之二。
43.圖4示出了圖2或圖3中步驟s13的部分子步驟的流程示意圖。
44.圖5示出了圖2或圖3中步驟s15的部分子步驟的流程示意圖。
45.圖6示出了圖2或圖3中步驟s17的部分子步驟的流程示意圖。
46.圖7示出了本發明實施例提供的數據搜索裝置的方框示意圖。
47.圖8示出了本發明實施例提供的電子設備的方框示意圖。
48.附圖標記:100-數據搜索系統;110-伺服器;120-客戶端;130-數據搜索裝置;140-解析模塊;150-匹配模塊;160-查詢生成模塊;170-數據查詢模塊;180-電子設備。
具體實施方式
49.下面將結合本發明實施例中附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發明實施例的組件可以以各種不同的配置來布置和設計。
50.因此,以下對在附圖中提供的本發明的實施例的詳細描述並非旨在限制要求保護的本發明的範圍,而是僅僅表示本發明的選定實施例。基於本發明的實施例,本領域技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
51.需要說明的是,術語「第一」和「第二」等之類的關係術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關係或者順序。而且,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句「包括一個
……」
限定的要素,並不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
52.隨著計算機技術和網際網路技術的發展,所使用到的數據量越來越大,為了存儲足夠多的數據量並保證數據的安全性,一般將數據存儲於後端數據中心的後端伺服器上,客戶端需要數據時,向後端伺服器發起數據搜索請求,後算伺服器即可返回目標數據給客戶端。
53.目前,常用的數據搜索/查詢方法是:用戶在前端頁面輸入查詢參數,並選擇查詢參數對應的類型,再向後端發起查詢該查詢參數的請求,後端接收到類型以及查詢參數,驗
證查詢參數通過之後,再生成查詢語句,基於該查詢語句進行查詢。
54.這種搜索方法,在進行查詢時,需要用戶手動選擇查詢參數對應的類型,極易因用戶選擇的類型錯誤而導致搜索錯誤,導致搜索準確度低,且靈活性差。並且,當出現新的類型數據時,則需要客戶端和後端伺服器同時添加關於該類型的搜索語法,導致開發繁複性較高,不利於開發。
55.基於上述考慮,本發明實施例提供一種數據搜索方法,其能夠改善目前的搜索方法所存在的搜索準確度低,且靈活性差的問題,並降低開發繁複性較高。以下,對該方案進行介紹。
56.本發明實施例提供的數據搜索方法,可以應用於如圖1所示的數據搜索系統100中,該數據搜索系統100包括多個客戶端120和伺服器110,每個客戶端120均通過網絡與伺服器110連接。
57.客戶端120,用於將用戶在前端頁面上輸入的搜索字符串發送至伺服器110。
58.伺服器110,用於接收任一客戶端120發送的搜索字符串,並採用本發明實施例提供數據搜索方法,進行數據搜索。
59.其中,伺服器110可以是獨立伺服器110,也可以是伺服器110集群。客戶端120可以是但不限於是:個人計算機、筆記本電腦、ipad、移動終端、可穿戴式移動終端和伺服器110等。
60.在一種可能的實施方式中,本發明實施例提供一種數據搜索方法,參照圖2,可以包括以下步驟。在本實施方式中,以該數據搜索方法應用於圖1中的伺服器110來舉例說明。
61.s11,接收客戶端發送的搜索字符串,對搜索字符串進行解析,得到數組。
62.其中,數組包括多個欄位組,每個欄位組包括搜索字符串的一個搜索值。
63.s13,將數組中的每個欄位組,與預設的過濾器庫中的過濾器進行匹配,確定與欄位組匹配的過濾器。
64.s15,針對每個欄位組,根據欄位組匹配的過濾器,對欄位組中的搜索值進行校驗,並在校驗通過後生成欄位組的查詢語句。
65.s17,基於各欄位組對應的查詢語句,得到目標查詢語句。
66.當用戶需要獲取某些數據時,在客戶端120的數據搜索頁面上,基於搜索需求,按照搜索語法,輸入搜索字符串,該搜索字符串可以形如「protocol:tcp+port:80+車輛」,客戶端120將搜索字符串發送至伺服器110。
67.伺服器110接收到搜索字符串之後,對搜索字符串進行解析,得到數組,例如,搜索字符串「protocol:tcp+port:80+車輛」對應的數據可以為{[protocol:tcp],[port:80],[車輛]}。
[0068]
伺服器110得到數組之後,將數組中的每個欄位組與自身的過濾器庫中的過濾器進行匹配,每個欄位組確定至少一個匹配的過濾器,從而根據過濾器對欄位組的搜索值的校驗通過之後,生成每個欄位組的查詢語句,再將每個欄位組的查詢語句組合,得到目標查詢語句。
[0069]
與傳統的數據搜索/查詢方法相比,本發明實施例提供的數據搜索方法實現根據搜索字符串自動生成更為準確的目標查詢語句,用戶在輸入搜索字符串時無需選擇類型,在一定程度上能夠避免用戶人為選擇類型導致的錯誤,以極大地提高搜索準確度,並能夠
改善靈活性差的問題。
[0070]
需要說明的是,伺服器110的過濾器庫中的所有過濾器均為預先註冊,過濾器的設置與註冊均可以靈活選擇,例如,可以每個關鍵字設置一個過濾器,也可以一個類型的關鍵字設置一個過濾器,在本實施方式中,不作具體限定。
[0071]
進一步地,參照圖3,本發明實施例提供的數據搜索方法還可以包括步驟s19。
[0072]
s19,採用目標查詢語句,在目標資料庫中進行搜索,得到查詢結果,並將查詢結果返回至客戶端。
[0073]
例如,目標資料庫可以es資料庫,也可以是mysql資料庫,在本實施方式中,不作具體限定。
[0074]
在一種可能的實施方式中,過濾器可以包括過濾器名字,過濾器支持的數據類型,數據校驗函數和查詢語句生成函數。其中,過濾器名字可以與匹配的關鍵字一一對應,表示搜索值所屬的類別。
[0075]
例如,過濾器名字可以包括但不限於是:ip(表示ip地址),os(表示作業系統),data(表示時間),app(表示應用軟體),protocol(表示協議)。
[0076]
進一步地,考慮到數據搜索過程中還可以進行全文搜索,故而,過濾器中還可以包括全文搜索變量。例如,全文搜索變量可以用global來表示,若global為true(或1),則表示支持全文搜索,若global為false(或為0),則表示不支持全文搜索。
[0077]
應當理解的是,根據伺服器110中的存儲數據的資料庫的不同,查詢語句生成函數也隨之不同。
[0078]
在一種可能的實施方式中,以存儲數據的資料庫為es資料庫為例,過濾器的數據結構可以如表1中所示。
[0079]
表1
[0080][0081]
在伺服器110上進行過濾器的註冊時,將過濾器的相關信息作為全局變量進行保存,即可完成註冊。以上述表1中的過濾器為例,該過濾器對應的全局變量可以形如下表2所示。
[0082]
表2
[0083][0084]
伺服器110接收到全局變量之後,根據過濾器的數據結構體的形式,生成全局變量對應的過濾器,完成過濾器的註冊。
[0085]
為了方便過濾器的註冊,伺服器110中可以預先存儲有常見的所有數據類型,以及數據類型對應的數據校驗函數和查詢語句生成函數。從而,在註冊過濾器時,在全局變量中輸入過濾器名字,過濾器支持的數據類型以及全文搜索變量值,伺服器110即可調取數據類型對應的數據校驗函數和查詢語句生成函數,生成過濾器的數據結構體,完成過濾器的註冊。無需上傳數據校驗函數和查詢語句生成函數。
[0086]
此外,為了提高靈活性和適用範圍,在過濾器註冊過程中,可以在全局變量中,type設為類型自定義(如typecustom),並上傳自定義的查詢語句生成函數和數據校驗函數,即可完成過濾器自定義。
[0087]
進一步地,用戶需要進行數據搜索時,基於搜索需求(查詢需求),根據預定的搜索語法,編寫出搜索字符串。應當理解的是,搜索語法可以是任一種,本實施方式中,不作具體限定。
[0088]
在一種可能的實施方式中,針對步驟s11,對搜索字符串進行解析得到數組的步驟可以進一步實施為:基於搜索語法對應的數據結構,對搜索字符串進行解析,得到數組。
[0089]
例如,若搜索語法包括以下定義:一個查詢條件由「:」前的關鍵字,關鍵字前的前綴以及「:」後的搜索值構成;用「:」分隔關鍵字和搜索值,關鍵字的前綴「+」表示「且」,關鍵字前無前綴表示「或」,關鍵字的前綴
「‑」
表示「非」。
[0090]
若伺服器110接收到的搜索字符串為「protocol:tcp+port:80+車輛」時,則可以將其解析為數組{[protocol:tcp],[+port:80],[+車輛]}。若伺服器110接收到的搜索字符串為「ip:192.168.1.1os:windows」,則可以將其解析為數組{[ip:192.168.1.1],[os:windows]}。
[0091]
在本實施方式中,[protocol:tcp],[+port:80],[+車輛]均可以作為一個欄位組。
[0092]
進一步地,為了便於後續進行過濾器匹配和使用過濾器進行處理,可以按照預設的結構體對象的數據結構,將數組中的每個欄位組,可以生成對應的結構體對象。
[0093]
結構體對象的數據結構可以靈活設置,本實施方式中,不作具體限定。在一種可能的實施方式中,結構體對象的數據結構可以形如下表3。
[0094]
表3
[0095][0096]
表3中,keyword代表一個查詢條件裡冒號前面的關鍵字,同時「keyword」欄位也對應過濾器中的過濾器名字。若一個查詢條件中沒有冒號,形如「ip+os:windows」,則意味著ip對應的keyword為空字符串,代表需要全文檢索。
[0097]
表3中,value代表一個查詢條件裡冒號前面的值,若欄位組為[ip:192.168.1.1],則value為ip,若欄位組為[+車輛],則value就是車輛。
[0098]
表3中的operation,表示每個查詢條件之間的組合關係。且operation可以有多個值,不同值表示不同的組合條件。例如,若前綴是「+」,operation的值可以為0,對應組合條件關鍵字。若前綴是
「‑」
,operation的值可以為2,對應組合條件關鍵字。若前綴為無,operation的值可以為1,對應組合條件關鍵字「should」。
[0099]
表3中的type,表示搜索類型,搜索類型包括但不限於是:全文搜索、術語搜索、模糊搜索和短語搜索。以es資料庫為例,type可以有以下幾種值:searchtypephrase string="phrase",searchtypewildcard string="wildcard",searchtypeterm string="term",searchtypephrasefuzz string="phrase_fuzzy",searchtypewildcardfuzz string="wildcard_fuzzy",searchtypetermfuzz string="term_fuzzy"。searchtypephrase代表value被引號包裹,會用es的match_phrase去匹配,即短語搜索。searchtypeterm代表沒有被引號包裹,會用es的match去匹配,即術語搜索。searchtypewildcard代表模糊搜索,會用es的wildcard去匹配。fuzz代表需要全文檢索。
[0100]
通過上述方式,能夠快速得到搜索字符串的數組,即數組中每個欄位組對應的結構體對象。
[0101]
進一步地,為了快速進行過濾器匹配,參照圖4,上述步驟s13可以進一步實施為以下步驟。
[0102]
s131,針對數組中的每個欄位組,判斷欄位組中是否存在關鍵字。若是,則執行步驟s132,若否,則執行步驟s133。
[0103]
需要說明的是,可以直接使用欄位組進行匹配,也可以使用欄位組對應的結構體對象進行匹配。
[0104]
s132,使用關鍵字與預設的過濾器庫中的過濾器進行匹配,確定出與關鍵字匹配的過濾器。
[0105]
s133,從預設的過濾器庫中確定出支持全文檢索的過濾器,作為欄位組匹配的過濾器。
[0106]
例如,若欄位組為[ip:192.168.1.1],則該欄位組與過濾器名字為ip的過濾器匹配。若欄位組為[+車輛],欄位組中不存在關鍵字,意味著需要進行全文搜索,則該欄位組與
數據結構中的global表徵全文搜索的過濾器匹配。
[0107]
針對步驟s15,對欄位組中的搜索值進行校驗的方式可以靈活設置,例如,可以按照預設規則進行校驗,也可以使用函數進行校驗,在本實施方式中,不作具體限定。
[0108]
在一種可能的實施方式中,對欄位組中的搜索值進行校驗的方式可以進一步實施為:使用過濾器中的數據校驗函數,校驗欄位組中的搜索值是否為過濾器中的數據類型,若是,則搜索值校驗通過,若不是,則搜索值校驗失敗。
[0109]
在搜索值校驗失敗時,可以向伺服器110反饋搜索值校驗失敗。
[0110]
通過對搜索值的數據類型進行校驗,能夠在一定程度上避免搜索值與關鍵字所對應的數據類型不匹配所導致的檢索錯誤的問題,能夠減少檢索錯誤,提高檢索準確度。
[0111]
對於步驟s15,生成欄位組的查詢語句的方式可以靈活選擇,例如,可以按照預設規則生成查詢語句,也可以調用預設函數生成查詢語句,在本實施方式中,不作具體限定。
[0112]
在一種可能的實施方式中,參照圖5,生成欄位組的查詢語句的方式可以進一步實施為以下步驟。
[0113]
s151,確定欄位組中搜索值的搜索類型。
[0114]
搜索類型包括但不限於是:全文搜索、術語搜索、模糊搜索和短語搜索。
[0115]
在實際應用中,可以根據欄位組的結構體對象中的type值直接確定,也可以根據欄位組中有無前綴,有無關鍵字以及前綴來確定。
[0116]
s152,利用過濾器中的查詢語句生成函數,結合搜索類型對應的搜索匹配函數,生成欄位組的查詢語句。
[0117]
以es資料庫為例,若欄位組的結構體對象中type值為searchtypephrase string="phrase",則表示短語搜索,使用過濾器中的查詢語句生成函數,結合"phrase"對應的搜索匹配函數match_phrase,來生成欄位組的查詢語句。
[0118]
應當理解的是,不同的資料庫,例如,es資料庫和mysql資料庫,同一搜索類型可以具有不同的搜索匹配函數。在實際應用中,可以根據資料庫,預先在伺服器110中註冊/存儲對應的搜索匹配函數。
[0119]
通過上述步驟s151和s152,能夠快速且準確的生成每個欄位組的查詢語句。
[0120]
由於一個搜索字符串中一般具有多個查詢條件,查詢條件之間具有組合關係,故而,在得到目標查詢語句的過程中需要引入多個查詢條件之間的組合關係。在一種可能的實施方式中,參照圖6,上述步驟s17可以進一步實施為以下步驟。
[0121]
s171,對搜索字符串進行解析,得到各欄位組之間的組合條件。
[0122]
也可以直接對欄位組進行解析,得到該欄位組前綴所標準的組合條件,例如,must,must_not,或should。
[0123]
s172,根據各欄位組之間的組合條件,將各欄位組的查詢語句組合,得到目標查詢語句。
[0124]
例如,若搜索字符串的數組中包括三個欄位組,且第二個欄位組和第三個欄位組的前綴分別為「+」和空,三個欄位組的查詢語句分別為查詢語句一,查詢語句二,查詢語句三,則最終的目標查詢語句可以為:{bool:{「must」:[查詢語句一],「should」:[查詢語句二],「must_not」:[查詢語句三]}}。
[0125]
本發明實施例提供的數據搜索方法,通過提前進行過濾器註冊,使得用戶通過客
戶端輸入搜索字符串,伺服器即可使用匹配的過濾器對搜索字符串中的每個搜索值進行校驗,並在校驗通過之後生成目標查詢語句,使用目標查詢語句進行查詢,實現了對搜索數據更加方便的驗證,以及快速生成查詢語句,能夠極大地提高搜索準確度。且,若要新增數據類型,則僅需在伺服器端添加新的過濾器或更新過濾器的數據類型及校驗函數,減少了開發工作,能夠提高開發速度。
[0126]
基於上述數據搜索方法的發明構思,在一種可能的實施方式中,本發明實施例還提供一種數據搜索裝置130,該數據搜索裝置130可以應用於圖1中的伺服器110。參照圖7,該數據搜索裝置130可以包括解析模塊140、匹配模塊150和查詢生成模塊160。
[0127]
解析模塊140,用於接收客戶端發送的搜索字符串,對搜索字符串進行解析,得到數組。其中,數組包括多個欄位組,每個欄位組包括搜索字符串的一個搜索值。
[0128]
匹配模塊150,用於將數組中的每個欄位組,與預設的過濾器庫中的過濾器進行匹配,確定與欄位組匹配的過濾器。
[0129]
查詢生成模塊160,用於針對每個欄位組,根據欄位組匹配的過濾器,對欄位組中的搜索值進行校驗,並在校驗通過後生成欄位組的查詢語句。
[0130]
查詢生成模塊160,還用於基於各欄位組對應的查詢語句,得到目標查詢語句。
[0131]
進一步地,請繼續參照圖7,該數據搜索裝置130還可以包括數據查詢模塊170。
[0132]
數據查詢模塊170,用於採用目標查詢語句,在目標資料庫中進行搜索,得到查詢結果,並將查詢結果返回至客戶端。
[0133]
上述數據搜索裝置130中,通過解析模塊140、匹配模塊150和查詢生成模塊160的協同作用,實現根據搜索字符串自動生成更為準確的目標查詢語句,用戶在輸入搜索字符串時無需選擇類型,在一定程度上能夠避免用戶人為選擇類型導致的錯誤,以極大地提高搜索準確度,並能夠改善靈活性差的問題。
[0134]
關於數據搜索裝置130的具體限定可以參見上文中對於數據搜索方法的限定,在此不再贅述。上述數據搜索裝置130中的各個模塊可全部或部分通過軟體、硬體及其組合來實現。上述各模塊可以硬體形式內嵌於或獨立於電子設備中的處理器中,也可以以軟體形式存儲於電子設備的存儲器中,以便於處理器調用執行以上各個模塊對應的操作。
[0135]
在一種實施方式中,提供了一種電子設備180,該電子設備180可以是伺服器110,其內部結構圖可以如圖8所示。該電子設備180包括通過系統總線連接的處理器、存儲器、通信接口、顯示屏和輸入裝置。其中,該電子設備180的處理器用於提供計算和控制能力。該電子設備180的存儲器包括非易失性存儲介質、內存儲器。該非易失性存儲介質存儲有作業系統和電腦程式。該內存儲器為非易失性存儲介質中的作業系統和電腦程式的運行提供環境。該電子設備180的通信接口用於與外部的終端進行有線或無線方式的通信,無線方式可通過wifi、運營商網絡、近場通信(nfc)或其他技術實現。該電腦程式被處理器執行時實現如上述實施方式提供的數據搜索方法。
[0136]
圖8中示出的結構,僅僅是與本發明方案相關的部分結構的框圖,並不構成對本發明方案所應用於其上的電子設備180的限定,具體的電子設備180可以包括比圖8中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
[0137]
在一種實施方式中,本發明提供的數據搜索裝置130可以實現為一種電腦程式的形式,電腦程式可在如圖8所示的電子設備180上運行。電子設備180的存儲器中可存儲
組成該數據搜索裝置130的各個程序模塊,比如,圖7所示的解析模塊140、匹配模塊150和查詢生成模塊160。各個程序模塊構成的電腦程式使得處理器執行本說明書中描述的數據搜索方法中的步驟。
[0138]
例如,圖8所示的電子設備180可以通過如圖7所示的數據搜索裝置130中的解析模塊140執行步驟s11。電子設備180可以通過匹配模塊150執行步驟s13。電子設備180可以通過查詢生成模塊160執行步驟s15和s17。
[0139]
在一種實施方式中,提供了一種電子設備180,包括存儲器和處理器,該存儲器存儲有電腦程式,該處理器執行電腦程式時實現以下步驟:接收客戶端發送的搜索字符串,對搜索字符串進行解析,得到數組;將數組中的每個欄位組,與預設的過濾器庫中的過濾器進行匹配,確定與欄位組匹配的過濾器;針對每個欄位組,根據欄位組匹配的過濾器,對欄位組中的搜索值進行校驗,並在校驗通過後生成欄位組的查詢語句;基於各欄位組對應的查詢語句,得到目標查詢語句。
[0140]
在一種實施方式中,提供了一種存儲介質,其上存儲有電腦程式,電腦程式被處理器執行時實現如下步驟:接收客戶端發送的搜索字符串,對搜索字符串進行解析,得到數組;將數組中的每個欄位組,與預設的過濾器庫中的過濾器進行匹配,確定與欄位組匹配的過濾器;針對每個欄位組,根據欄位組匹配的過濾器,對欄位組中的搜索值進行校驗,並在校驗通過後生成欄位組的查詢語句;基於各欄位組對應的查詢語句,得到目標查詢語句。
[0141]
在本技術所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,也可以通過其它的方式實現。以上所描述的裝置實施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據本發明的多個實施例的裝置、方法和電腦程式產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用於實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現方式中,方框中所標註的功能也可以以不同於附圖中所標註的順序發生。例如,兩個連續的方框實際上可以基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或動作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的組合來實現。
[0142]
另外,在本發明各個實施例中的各功能模塊可以集成在一起形成一個獨立的部分,也可以是各個模塊單獨存在,也可以兩個或兩個以上模塊集成形成一個獨立的部分。
[0143]
所述功能如果以軟體功能模塊的形式實現並作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:u盤、移動硬碟、只讀存儲器(rom,read-only memory)、隨機存取存儲器(ram,random access memory)、磁碟或者光碟等各種可以存儲程序代碼的介質。
[0144]
以上所述僅為本發明的優選實施例而已,並不用於限制本發明,對於本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。