CN118132618A - 企业数据源深度挖掘 - Google Patents
企业数据源深度挖掘 Download PDFInfo
- Publication number
- CN118132618A CN118132618A CN202311543558.XA CN202311543558A CN118132618A CN 118132618 A CN118132618 A CN 118132618A CN 202311543558 A CN202311543558 A CN 202311543558A CN 118132618 A CN118132618 A CN 118132618A
- Authority
- CN
- China
- Prior art keywords
- search
- query
- column
- client
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000005065 mining Methods 0.000 title abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 125
- 230000004044 response Effects 0.000 claims abstract description 76
- 238000011156 evaluation Methods 0.000 claims abstract description 23
- 238000013507 mapping Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 21
- 238000013475 authorization Methods 0.000 claims description 10
- 238000013439 planning Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 description 40
- 239000000725 suspension Substances 0.000 description 28
- 238000004891 communication Methods 0.000 description 27
- 230000008520 organization Effects 0.000 description 24
- 238000003860 storage Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 230000000977 initiatory effect Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 239000000203 mixture Substances 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000009472 formulation Methods 0.000 description 3
- 239000002131 composite material Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000007670 refining Methods 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 241001672694 Citrus reticulata Species 0.000 description 1
- 206010013883 Dwarfism Diseases 0.000 description 1
- 241000196324 Embryophyta Species 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- -1 subassembly) Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/256—Integrating or interfacing systems involving database management systems in federated or virtual databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了用于数据源深度挖掘的方法和装置。深度挖掘器提供对可用结构化数据库和/或非结构化数据源的扩展范围。与依赖表评估的常规工具相比,直接评估列与客户端查询的相关性提供了具有潜在相关性的更广泛的列。直接列评估扩展到非结构化数据源。广泛的接口将搜索范围无缝地扩展到各种结构化和非结构化数据源。所公开的技术在降低计算资源利用率的情况下提供优越的结果。人类专业知识的局限性被克服。可以通过缓存、列或结果排名、搜索细化和定制响应进一步提高效率。
Description
背景技术
数据库搜索工具通常在它们利用可用数据的程度上受到限制。常规工具访问数据库的方式不灵活,因此可能会丢失相关数据。为了克服这种限制,可能需要数据库组织的专家级知识。此外,常规工具通常只能访问一种特定的数据库类型。搜索多个数据库可能需要对每个数据库进行单独搜索,并为每个数据库提供不同的专家支持。随着数据库环境规模和复杂性的增加,没有人可能拥有足够的专业知识来满足特定需求,即使对于单个数据库也是如此。随着异构环境的使用越来越多,挑战也随之增加。因此,仍然需要改进的技术来对数据库和其它数据源进行自动深度访问。
发明内容
简而言之,所公开的技术涉及用于深度访问数据源的各种创新技术。一般原则是花费最初的努力来扩展搜索范围以获得后续益处:快速收敛到期望结果,找到最佳结果的可能性很高,和/或消耗的计算资源大幅减少-无需可用数据源的专家级知识。术语“深度”在本文中是指所公开的技术查找超出一些传常规工具范围的查询结果的能力。术语“挖掘”是指可以基于与本客户端查询的相关性来执行搜索的方法,该相关性可以包括结果相关性或要搜索的列的相关性。所公开技术的示例在本文中被称为“深度挖掘器”,并且可以是实施或被实施为服务或其它软件应用程序的装置或方法。
一方面,对列的直接标识可以扩展给定数据源内的搜索范围。另一方面,广泛的接口(甚至包括对结构化和非结构化源的查询的无缝集成)扩展了跨多个数据源的搜索范围。创新的深度挖掘器可以有利地实施这些特征中的一者或两者,并且任选地实施本文描述的许多其它特征。
在某些示例中,所公开技术由计算机实施为方法。从客户端查询中提取一个或多个搜索属性。基于搜索属性,从包括一个或多个数据源的搜索域中直接标识与客户端查询相关的一个或多个列。对标识的列执行相应的数据库查询以获得客户端查询的结果。为结果确定相应的层次结构路径。基于结果和层次结构路径制定对客户端查询的响应,并将该响应发送到目的地。
在进一步的示例中,所公开技术被实施为存储指令的计算机可读介质,该指令在由一个或多个硬件处理器执行时使硬件处理器执行用于处理从客户端接收的客户端查询的操作。客户端查询与搜索关键字和搜索范围相关联,并且客户端被授权访问包括结构化第一数据源和非结构化第二数据源的多个数据源。该操作包括使用第一数据源的字典来查找与搜索关键字相关的第一列,以及针对搜索范围规划针对第一列的第一数据库查询。执行第一数据库查询以获得第一结果,并且跟踪第一结果的第一层次结构路径(在第一数据源中)。该操作还包括使用第二数据源的元数据来查找与搜索关键字相关的第二列,以及针对搜索范围规划针对第二列的第二数据库查询。执行第二数据库查询以获得第二结果,并且跟踪第二结果的第二层次结构路径(在第二数据源中)。该操作还包括核对该第一结果和该第二结果以便通过该第一层次结构路径和该第二层次结构路径发送到该客户端。
本发明的上述和其它目的、特征和优点将从下面参考附图进行的详细描述中变得更加明显。
附图说明
图1是示出用于向用户提供搜索结果的常规探索方法的流程图。
图2是结构化数据库的图式,示出了适用于所公开技术的示例的特征。
图3是非结构化数据源的图式,示出了适用于所公开技术的示例的特征。
图4是根据所公开技术的用于响应客户端查询的第一示例性方法的流程图。
图5是根据所公开技术的用于响应客户端查询的第二示例性方法的流程图。
图6是示出所公开技术的示例性部署环境的合成图。
图7是所公开技术的示例的第三操作方法的流程图。
图8是根据所公开技术的用于执行挖掘搜索的第四示例性方法的流程图。
图9是提供图8的方法的示例性细节的流程图。
图10是提供图8的方法的示例性细节的另一个流程图。
图11是示意性地描绘了适合于实施所公开技术的计算环境的图式。
图12是示意性地描绘与计算云结合操作以实施所公开技术的计算装置的图式。
具体实施方式
概述
数据库环境提供信息来满足用户需求。在原始数据库中,可能只有一个地方能够查找相关信息,但是随着数据库环境的增长,即使是用于单个查询的相关信息也可以广泛分布在多个表甚至多个数据库中。确定在哪里查找已成为挑战,有时需要对数据库中的表和关系具有专家级知识,并且当相关数据分布在多个数据库中时可能需要跨领域知识。更进一步地,随着数据库增长规模的增长,没有人可能具有标识所寻求数据的最相关位置的必要知识。
该问题的另一个方面是可用的数据源通常多种多样。一些数据源可能是结构化的,而另一些数据源可能是非结构化的。常规上,一些类型的数据源可以使用专门的、通常对供应商特定的工具来独立查询,这需要额外的努力并抑制可用数据源的有效利用。
数据库查询处理程序(有时称为“数据库引擎”)具有前端方面,即,接收客户端查询;内部路由方面(标识对应数据库查询的一个或多个目标,例如,确定在哪里搜索);以及后端方面,即,对每个目标规划和执行数据库查询。
自然语言查询已经变得流行,以缓解一部分专业知识问题。通过允许非技术或非专家用户在不了解SQL、ABAP或其它数据库语言的情况下查询数据库,自然语言系统可以解决处理数据库查询的前端问题。然而,自然语言系统通常会移交到常规的数据库查询处理程序,而不解决路由方面的问题。
如果客户端没有明确指定目标,则内部路由通常以表级别进行处理,例如通过选择被认为与本客户端查询最相关的表来进行处理。采用基于表的方法的动机可以简单到数字问题:商业数据库部署通常可以有约十至约一千个表,而对应的列数可以大一个数量级-从约数百至约一万个-并且一些数据库部署可能会超出这些数量几个数量级。
事实上,表选择方法对于简单的查询来说可能是令人满意的。要查找一条特定记录,例如制造商数据库中的零件,只需在零件表的明显位置中按零件编号进行搜索就足够了。然而,现实世界的应用可能更加复杂。具体地,数据库用户可能不仅仅想要特定记录,而是可能想要找到相关记录并辨别模式。将搜索限制在一个可能的表中通常会错过对用户的搜索更有效的其它表。
以下一些示例是在具有悬架问题的车辆的背景下描述的。车辆标识号(VIN)可以在许多表、许多数据库中找到-车辆寿命周期的每个阶段或方面(制造、运输、经销商、维修、管理、出险)都可以有自己的数据库。一些表可以使用VIN作为关键字,而在其它表中,VIN可以作为外来关键字。常规的数据库引擎可以选择查看以VIN作为本地关键字的表,但是可以在VIN作为外来关键字的制造记录或维修记录表中找到更多相关信息。
其它搜索属性(诸如“悬架”)可能不会作为任何列标签找到,而是可以在一些问题描述(例如,在服务记录表)中找到的值。如果没有领域专业知识,选择与此类搜索最相关的表可能面临挑战。事实上,问题描述列不太可能是任何表中的本地关键字(或外来关键字)。
解决这些问题的一些常规方法是基于临时探索,这可能导致计算繁重、耗时,并且很大程度上取决于用户的技能水平,不能保证达到最佳或接近最佳的结果。
一方面,所公开技术通过绕过表的评估并直接继续评估列来解决“去哪里查找”的问题。列评估方法强大的原因之一是它可以深入了解列描述和列的分类值来评估相关性。为了进行说明,列评估可以找到“悬架”作为服务或制造数据库中的子系统或子总成列的值,这可能超出了常规表级数据库引擎的范围。列评估的另一个优点是可以对多个列进行标识和排名,以选择更有前途的列并提高效率。
虽然列评估方法在评估列而不是表时可能会产生10倍的计算负担,但是这可能是一次性负担,并且可以在相对少量的元数据上执行。在常规方法中,用户可以节省计算评估表,但是随后的探索可能需要多次搜索迭代,每次迭代都在相对大量的数据上执行,这使得任何初始计算节省相形见绌。
简单的说明可能会有所帮助。在常规方法中,用户可以使用1000个计算机周期从1000个表中选择一个表来搜索特定客户端查询,并且可以在每个记录一个计算机周期中对每1,000,000个记录执行20次连续搜索迭代。因此,即使不对连续迭代的附加表评估进行计数,计算机的总使用量也是1000+(20x 1,000,000)=20,001,000个周期。相反,利用所公开技术,用户可以使用两次搜索迭代,第一次迭代用于所呈现的查询,而第二次迭代用于查找与第一次迭代的最佳结果相关的记录。用户的计算机总使用量为10,000个计算机周期,以在10,000列中进行选择,加上对1,000,000条记录进行两次搜索迭代,总共10,000+(2x 1,000,000)=2,010,000个周期,这比常规方法节省了约十倍。正如这个简单的示例所示,通过能够快速定位所需数据,可以充分补偿评估大量列的负担。除了本文描述的其它优点之外,所公开技术还可以提供显著的计算优点。
另一方面,所公开技术通过跨多个数据源分布数据库查询来解决“去哪里查找”的问题。原理是相同的。在查询多个数据源(而不仅仅是一个方便的数据源)时预先发生的计算可以通过更快速地从不易访问的数据源中查找结果来弥补。在车辆悬架问题中,经销商处的用户可以容易地访问经销商处的维修记录,但是利用常规技术很容易错过同一车辆先前在另一经销商处因类似问题而维修过的情况。替代地,相关数据源可属于制造商,其中表可以提供关于特定批次零件的高缺陷率的信息,并且制造商的数据库可建立在完全不同的数据库平台上。
所公开技术的使得能够同时访问多个数据源(对客户端透明的数据源)的一些特征是基于证书的授权和广泛的接口能力。证书使得客户端查询能够分布到客户端被授权的所有数据库,而不需要客户端在每次客户端发出客户端查询时提供所有数据库的证书,同时还维护这些数据库的安全性。
在一些深度挖掘器示例中,广泛的接口能力支持结构化数据库和非结构化数据源两者。与结构化数据库的通信通常可以使用诸如SQL或ABAP的通用协议来执行,但是不同供应商之间的实施存在一定的差异。对于非结构化源,创新挖掘器可学习非结构化源中常见的定制组织的映射。在这两者之间,插件可根据其相应供应商提供的应用程序编程接口(API)的需要来用于新的或不太常见的结构化数据库。在一些示例中,深度挖掘器可自下而上地学习非结构化数据源的映射,例如通过搜索特定字段值(例如,姓名=James)、然后利用API函数向上跟踪数据字段到记录(例如,文档)和数据池(例如,集合)来学习。在其它示例中,可自上而下地学习映射,例如通过枚举数据源内的所有数据池(集合)、然后对数据池(集合)进行迭代以枚举每个集合中的记录(文档)等等来学习。
将数据库查询分布到多个列或多个数据库上可以生成来自不同来源的结果,并且可能需要跟踪每个结果的获得位置。为此,所公开技术的示例为结果提供了普遍独特的规范。为了说明,通过搜索特定表的特定列来查找记录或字段值,该特定表进而在特定数据库的特定模式下进行组织。使用生成给定结果(例如,记录)的数据库查询,可以连续地跟踪列、表、模式和数据库的标识符并将其聚合(例如,通过级联)为结果的精确限定符。聚合的限定符在本文中被称为“层次结构路径”。还可以为来自非结构化数据源的结果构建层次结构路径,尽管细节可能因非结构化数据源而异。一个列搜索可以命中多个记录,每个记录可以具有相同的层次结构路径,通过例如记录的各个关键字来进一步区分。因此,层次结构路径可以基于列来确定,并且可以在对该列执行数据库查询之前构建。
所公开技术可以广泛地应用于许多应用领域。虽然合适的数据存储环境通常存在于企业环境中(无论是商业、政府还是教育),但这不是必需的,并且所公开技术还可以应用于法律研究、科学研究、新闻档案、社交媒体、其它网络应用以及涉及结构化或非结构化数据源的许多其它应用。
说明性场景
使用与车辆上报告的悬架问题相关的常见场景来示出本文中的几个示例。在这种场景下,汽车经销商的服务经理Tom接收到存在悬架问题的车辆并寻求可能有助于理解问题根本原因的信息,该问题是常见的还是反复出现的、或者制造商是否已实施修复。数据环境包括经销商处的结构化数据库,但是Tom还具有属于其它经销商(一些使用与Tom经销商相同的数据库平台,一些使用不同供应商的技术)、制造商(包括一个结构化数据库和用于通信和文档的两个非结构化数据源)的附属数据库的授权,以及对两个行业源(在与制造商的非结构化数据源不同的平台上的零件数据库和非结构化新闻数据源)的订阅。不出所料,Tom对他的内部数据库有一定的了解,尽管尚未达到数据库专家的水平并且对附属数据库知之甚少。
Tom的经销商有一位数据库专家Jerry,Tom过去曾请他帮助进行本地数据库搜索。Jerry拥有内部数据库的专业知识,并且可以使用同一平台类似地浏览其它经销商的数据库,但是他对于Tom访问的其它数据源的技术知识要少得多。更复杂的是,Jerry本人只能访问当地经销商的数据库。
Tom和Jerry考虑是否有其它专家可以帮助他们。制造商的员工可能会配合,但他们在其它国家,并且语言和时区是障碍。行业消息来源都不以强大的技术支持而闻名。Tom和Jerry面临挑战。
所公开技术克服了所有这些问题。如本文描述,系统方法可透明地访问Tom有权访问的所有数据源,并且即使没有所涉及的数据源的专业知识,挖掘方法也可以找到具有相关信息的列。Tom可输入带有车辆标识号(或车辆型号)、“悬架”和“问题”的客户查询,而创新的数据挖掘器可以完成其余工作。具体地,创新的数据挖掘器可找到以下所有数据块,其中任何一个都可能对Tom来说是有价值的信息:(1)同一问题的报告集中在Tom所在地区的经销商处(经销商从其它工厂接收的车辆没有出现这种问题),(2)制造商的来料检验显示悬架连杆零件的缺陷率很高,(3)制造商文档显示一个月前零件供应商变更,(4)行业零件数据库显示有问题的零件缺货,且无补货日期,(5)行业传言该车型可能被召回。
其中一些数据块(nugget)依赖于对列的相关性评估。第3点(供应商变更)可在零件供应商变更日志中找到,该零件供应商变更日志不太可能被视为高度相关的表。然而,该表可以有一个子系统列,该子系统列将“悬架”作为分类值列表中的一者。子系统列可以具有较高的相关性分数。同样,第5点(召回传闻)可在通用新闻数据池中找到,相关性并不是太高。然而,新闻类别列可以有包括“召回通知”的分类值列表,其描述包括词语“问题”,允许自动化工具为该列提供足够高的相关性分数以供选择该列。
另一方面,混合结构化和非结构化数据源的能力允许找到(2)和(3)两者,并且对于(4)和(5)也是类似地。如果确实所有五个数据块都存在,则错过一个或两个数据块也是可容忍的。但是如果只存在一个或两个,则可找到所有五个数据块的创新的深度挖掘器的价值就变得显而易见。
术语
本节中所有引用术语的用法和含义适用于本公开全文,除非另有明确说明或与上下文不一致。以下术语扩展到相关词语形式。
“应用程序”或“软件应用程序”是为一个或多个客户端执行功能的计算机可执行程序,并且可以不同于操作系统、软件库、测试套件或开发环境。另外,一些应用程序可以在没有客户端的情况下操作,例如由监督程序或另一个应用程序启动,自主地或以事件驱动模式执行任务。应用程序可以包括可执行指令(称为“代码”或“程序代码”)和不可执行数据(称为“应用程序数据”或“程序数据”)。许多现代应用程序可以同时支持多个客户端,并且每个客户端都可以与其它客户端隔离,使得每个客户端都认为拥有自己的应用程序副本。这些实际的或感知的应用程序副本被称为“应用程序实例”。术语应用程序实例扩展到具有单个实例的应用程序。
“授权”是指授予客户端或用户对给定资源(诸如数据源)具有给定访问级别的权限,或指代配置此类权限的行为。“证书”是存储一个或多个授权的文档。
作为名词,“缓存”是数据存储库,其存储数据项的副本,诸如数据库查询的结果或关联项,诸如层次结构路径、排名、包含实体、数据库查询、客户端查询、搜索关键字,或搜索范围。作为动词,“缓存”是指将任何此类数据项存储在存储库中的行为。可以通过添加、修改或删除缓存数据来“更新”缓存。随后可以从缓存中“检索”缓存的数据项。
“客户端”是使用由被称为“服务器”的另一个硬件或软件计算实体提供的资源的硬件或软件计算实体。一些客户端可以与用户交互操作,向用户提供提示、信息或输出,或者从用户接收输入;然而,这不是必需的。其它客户端可以在无人值守或无主机模式下操作。“用户”是个人。
“列”是同类字段的集合,即,在多个数据记录中起共同作用的字段。虽然列可以在数据库表的上下文中直观地可视化,但是该术语并不限于此,并且也可以应用于非结构化数据中的同类字段。表(下文进一步讨论)至少有两列,因此包含同类字段(在一列中)和不同字段(跨多列)。表不是列。
“计算环境”(或简称为“环境”)是指可以在其上运行给定软件应用程序的硬件(例如,处理器、存储器、存储装置、网络接口)和软件(例如,操作系统、实用程序)的组合。本文感兴趣的一些环境包括云环境、数据库环境、客户环境或主机环境。这些标签并不相互排斥。客户端和独立的深度挖掘器也被实施为计算环境。
无限定术语“数据”是指信息的任何数字表示形式。
“数据格式”是指其中存储、维护或发送数据的语言或语法。数据格式的非限制性示例可以包括:基于文本的格式,诸如CSV(逗号分隔值)、JSON(JavaScript对象表示法)、XML(可扩展标记语言);与各种数据库、非结构化数据源或文件系统相关联的特定二进制或文本规范(包括键值对);专有的二进制或基于文本的规范;或源自其中一者或多者或在其中一者或多者上构建的扩展或变体。所公开技术的示例使用“通用中间格式”来维护数据,而不管接收或发送数据的格式如何。即,以另一种格式接收的数据项可以被转译为通用中间格式,以便在创新的深度挖掘器中存储或分析。通用中间格式可以是基于文本的格式,并且可以应用于以下一项或多项:客户端查询、列标识符、层次结构路径、数据库查询、结果、排名分数、缓存的数据、缓存元数据或响应。
与格式化不同的是“数据组织”,它可以指代数据例如在查询响应中的排列方式。即,指定格式仍然可以为响应中的数据的排列方式保留灵活性。例如,客户端可要求以特定顺序呈现列,或者可以提供模板,使得可以将响应数据直接摄取到下游应用程序中。作为制定响应的一部分,示例性深度挖掘器可以例如根据指定或预定模板组织数据。
“数据源”是在计算机可读介质上维护的数据的集合,并且可通过在一个或多个处理器处执行指令来访问。数据源可以是非结构化的或结构化的,后者称为数据库。“非结构化数据源”包含不适合常规组织的形式的数据。非结构化数据源的两个公知的实施方式是和/>非结构化数据源的非限制性示例包括对象存储、文档存储和集合。如本文所使用的,术语数据库不包括非结构化数据源。非结构化数据源可以包含各自具有一个或多个字段的记录,然而非结构化数据源的记录可能不适合表的固定组织。相反,记录的集合通常被称为“数据池”。非结构化数据源可以有一个或多个数据池。数据池中的记录可以共享公共字段(例如,作者、大小、数据类型),并且同类字段的聚合被称为列,类似于数据库表中的列,即使非结构化数据源中可能不存在这样的表也是如此。提供组织信息的非结构化数据源的设施被称为“映射”,并且是数据库的模式、字典和描述的对应部分。即,映射可以提供非结构化数据源内的组织实体之间的定义、描述和关系。虽然模式、字典和描述可以被视为数据对象,但是映射可以任意组合的方式包含数据对象或方法。为了说明,/>提供了一种方法“db.inventory.find({})”来获得集合中的所有文档,该方法具有用于缩小数据检索范围的有许多变体。
“数据库”是在计算机可读介质上维护的数据的结构化集合,并且可通过在一个或多个处理器处执行指令来访问。数据库可以是关系数据库(诸如)、内存式数据库或磁盘数据库、分层数据库或非分层数据库,或者任何其它类型的数据库。本公开中感兴趣的一些数据库被组织为“表”,每个表具有多个记录并且每个记录是具有相应值的字段的集合。两条记录的字段可以相同,而对应的值可以相同或者可以因记录而异。记录表示为表的“行”,而列是同类字段的集合,无论表的物理组织如何。数据库的组织包含在其“模式”中,该模式可以被视为文档或数据结构。关于数据库内的组织单位的附加信息(诸如表或列)可以在字典和描述中以不同方式找到。
“字典”是指定数据库内的组织实体的属性的文档或数据结构。“表字典”定义数据库的表,并且本身可以是表。表字典的每一行或记录对应于数据库中的一个表。每个表记录可以具有相应的属性字段,诸如标识符、名称、存储类、每个表的维度、访问限制或相关联的模式。表记录可以列出本地关键字、本地关键字和外来关键字或本表的所有列。“列字典”定义一个或多个表的列,并且本身可以是表。列字典的每一行或记录可以对应于数据库中的一个表。每条列记录可以具有相应的属性字段,诸如标识符、名称、数据类型、大小以及指示该列是本地关键字、外来关键字还是两者都不是的标志。在不同的示例中,字典可以包含对它们相应的组织实体的描述,但是这不是必需的,并且描述可以维持在单独的文档中。
如果对数据源中的组织单位(通常是列)进行评估和选择,而不考虑包含实体属于哪个组织单位,则认为该组织单位是“直接标识的”。一些常规工具选择与给定客户端查询相关的表,然后选择该表内的列来执行数据库查询。因为作为选择列的条件,首先对表进行评估,所以不会直接标识所选择的列。相反,所公开技术的示例从数据库表收集所有列,评估这些列,由此选择相关列。虽然这些表可以用作到达各个列的导航辅助工具,但是不会评估这些表与客户端查询的相关性,并且认为可以直接标识所选择的列。
在分层数据源中,数据项的“包含实体”是比包含该数据项的至少一部分的本数据项处于更高层次结构级别的组织单元。给定与数据库查询匹配的字段或记录形式的搜索结果,其包含实体包括列(适用于结构化和非结构化数据源)、以及表或数据池(分别适用于结构化或非结构化数据源)。在一些情况下,单个列可以分布在多个表或多个数据池中,在这种情况下,这些表或数据池中的任一者(或任何组合)可以被视为包含实体。即,包含实体不需要包含整个被包含实体。
“字段”是具有特定作用的数据记录的成员。字段可以有值,或者可以是未定义的。
“分层”是指多级组织形式,其中较低级别的实体是一个或多个较高级别实体的一部分或从属于一个或多个较高级别的实体。通常,层次结构在层次结构的顶部有一个顶点或根实体。本文描述的一些数据源是分层的。层次结构可以是树,但不一定是树。作为反例,给定的数据库列可以是多个表的一部分,这些表进而可以在相同或不同的模式中组织,最终在一个数据库(这是顶点实体)中组织。
“层次结构路径”是唯一定义给定实体在数据源内的位置的路径。在不同的示例中,层次结构路径可以指定紧邻给定实体上方的包含实体,或者可以精确定位给定实体本身。为了说明,数据记录的给定字段可以连续地向上跟踪到列、表、模式和数据库。这些标识符的聚合(可以被表示为[Database-_ID].[Schema_ID].[Table_ID].[Column_ID])可以完整且明确地指定给定字段所在的位置。在一些示例中,可以从数据记录的层次结构路径中省略Column_ID,而在其它示例中,可以保留Column_ID以指示正在搜索哪个列来查找本数据记录。所公开技术的一些示例从层次结构路径中省略本地关键字,而其它示例可以包括记录关键字,例如,给定行的标识符(“Row_ID”)。因此[Database-_ID].[Schema_ID].[Table_ID].[Record_key]也可以是有效的层次结构路径。
作为名词,“主机”是指软件应用程序可以在其中运行的计算环境。作为动词,“主机”是指为软件应用程序提供这样的计算环境。
“增量”是指数据源的变化。增量的非限制性示例包括:添加、删除或修改数据源内的组织单元(例如,表、池或列);添加、删除或修改数据源中的一条或多条记录。增量搜索的价值在于,可以将早期搜索的缓存结果重新用于数据源中未更改的数据,并且可以仅在增量上运行新的搜索,从而通常显著地节省计算资源的使用。一些创新的深度挖掘器使用增量搜索来提高效率和改进延时。
“智能”是指可以帮助获得更好结果(由相关性分数或排名确定)或以更少的资源利用率获得此类结果的几个特征中的任一者。前者的示例包括使用相关性分数来选择要查询的列,或对结果进行排名来制定对客户端查询的响应。后者的示例包括缓存,因为增量数据库查询通常可以减少一个数量级或更多数量级的计算负担;或记录查询历史记录以帮助选择相关列以供将来查询。
“自然语言”是人类之间的一种编码交流形式,该编码交流形式随着时间的推移通过口头或书面使用而演变。因此,自然语言不同于计算机编程语言、诸如世界语的构造语言、诸如摩尔斯电码的代码、或者诸如用于电话、数据通信或无线通信的机器对机器通信代码。阿拉伯语、孟加拉语、中文(例如,普通话)和英语只是自然语言的几个示例。一些创新的深度挖掘器可以合并或耦合到自然2处理引擎来处理自然语言客户端查询并提高深度挖掘器的可访问性。
“查询”是对信息的请求,诸如数据库环境中包含的信息。在所公开的深度挖掘器的上下文中,查询被区分为“客户端查询”和“数据库查询”,该“客户端查询”是深度挖掘器从客户端接收的查询,该“数据库查询”是深度挖掘器向数据源发出的查询。尽管本文中明确认为非结构化数据源不是数据库,但是为了描述方便,术语“数据库查询”同样适用于向结构化或非结构化数据源发出的查询。客户端查询可以诸如ABAP或SQL的数据库查询语言或者通过在图形用户界面上的选择(例如,菜单项的选择)来呈现为自然语言查询。客户端查询和数据库查询都会引发“响应”,其包含解决查询的信息。下文进一步讨论其它相关联的术语,诸如搜索属性、搜索关键字、搜索结果、搜索范围和搜索域。
作为动词,“排名”是指为同类项目(通常是搜索结果)分配相应的分数,从而允许定义项目之间的顺序。排名不需要重新排列已排名的项目。作为名词,“排名”是指给定项目按分数排序之后该项目的位置。“高排名”优于“低排名”,这意味着排名较高的项目可以被认为比排名较低的项目更有价值。按照惯例,排名最高的项目可以被指定排名编号1。然而,并没有暗示更高的排名是否与数字上更大或更小的分数相关联。即,排名可以与数值分数直接或反向相关。用于对列或结果进行排名的分数可以基于它们的相关性分数,如本文进一步描述的。另外,列的分数可以在其数据库查询完成后进行调整,例如基于获得的结果(记录)的数量或者基于性能指标进行调整。为了说明,可以认为找到30个匹配记录的列比仅找到两个匹配记录的另一列更有价值。需要七秒返回10个结果的列的排名可能高于需要2分钟返回10个结果的另一列。
在查询和响应的上下文中,术语“接收”和“发送”是指通过网络进行的通信,该通信可以是消息的形式。通信可以是电磁的,例如通过有线、无线或光学介质进行,但这不是要求。
“记录”是具有相应值的多个数据字段的集合,并且该术语在结构化和非结构化数据源的上下文中使用。在非结构化数据源中,记录还可以包含尚未从中提取字段值的不透明数据对象。在数据库的上下文中,记录可以是数据库表的一行,其中记录的字段包含表的列的相应值。
“相关性”是指列或结果的属性,它向客户端查询指示其可能的值。对于列,可以通过基于多种因素计算该列的分数(按照惯例,越高越好)来确定相关性。以下是此类因素的非限制性示例。首先,与搜索属性的词汇匹配(无论是在列标签、列描述还是允许的分类值列表中)都可以连同匹配位置的权重一起用作相关性因素。为了说明搜索属性“装备(Equipment)”,列标签“Equip”可以获得比“Equ”更高的分数,并且列标签“Equip”可以生成比列描述中找到的“Equip”更高的分数。作为第二示例,例如使用同义词字典或命名实体列表进行的与搜索属性的语义匹配可以用作因素。为了说明,列标签“故障报告”可能会因为在语义上与搜索属性“问题”匹配而获得高分。第三因素示例可以是允许的或最常见的列值与搜索属性的词汇或语义匹配。为了说明搜索属性“悬架(suspension)”,具有“悬架”作为允许值的子系统列可以获得比具有“suspended”作为允许值的账户状态列更高的分数。第四因素示例可以是包含实体(例如,表或数据池)中的其它列对于其它搜索属性的相关性分数。为了说明,表中还具有“子系统”列的“问题”列可提高相关性,而物理工厂服务日志表中的“问题”列则可能不会。第五因素示例可以是表明本列已经为先前客户端查询或与当前查询重叠的先前客户端查询产生高排名结果的历史记录。为了说明,示例性深度挖掘器可以具有日志或缓存,其指示给定列对于所有客户端查询已跻身前五列(基于获得的结果)中出现了50次,或者对于重叠的客户端查询出现了12次,并且给定列可相对于历史不太成功的另一个列提高其相关性分数。可以基于与相应列中的一个或多个搜索范围的匹配接近度来计算结果(例如,通过数据库查询找到的记录)的相关性,其中附加权重任选地被给予(a)其数据库查询找到记录的列的相关性分数或(b)为本数据库查询返回的结果记录的数量。结果相关性也会受到结果所在域的影响。即,企业数据源环境可以被划分为多个域,例如,对应于企业内的部门,或者对应于附属合作伙伴的域。层次结构路径可以为任何结果提供域信息,并且可以基于本客户端的预定简档为某些域分配更高的相关性分数。
“请求”是期望得到实质性响应(“响应”)(即,超出确认范围的响应)的消息;或者其接收者期望对其采取指定操作的消息。相比之下,“通知”或“报告”不需要收到实质性响应,也不需要导致任何特定动作。
“搜索”是指产生与查询相关的信息的一个操作或一组操作。
数据库查询可以包含指导在哪里搜索和搜索什么的信息。“搜索关键词”指示搜索位置并且可以是一列。为了说明查找汽车的情况,搜索关键词可以是标记为“VIN”的列。“搜索范围”指示搜索内容,其可以是单个值、值范围、模式或对应参数的期望值的另一个说明符。在查找汽车的上下文中,搜索范围可以是值1FTYR10XXYPC06335。利用该搜索关键字和搜索范围,数据库查询可返回VIN字段中值为1FTYR10XXYPC06335的记录。在不同的示例中,搜索范围可以指定原子数据类型,诸如数字或字符串或枚举类型;可指定值范围,诸如10至100;可以指定模式,诸如“AB?123*”,它是带有通配符“?”和“*”的文本字符串;或者可以指定关系,诸如“不等于Null(空)值”。搜索范围可以包括限定符,例如,指示需要精确匹配还是模糊匹配。数据库查询也可以是指定多个搜索关键字或多个搜索范围的复合查询。
“搜索属性”是定义搜索的参数。搜索属性可以从客户端查询中提取,并且可以用于导出一个或多个搜索关键字和对应的搜索范围。从概念上讲,客户端查询可以如下转换为数据库查询:客户端查询→搜索属性→搜索关键字和搜索范围→数据库查询。在图中,查询指示具有特定VIN的车辆存在悬架问题,可能的搜索属性包括:“问题”和“VIN”,其指示感兴趣参数,并且“悬架”和“1FTYR10XXYPC06335”指示这些参数的期望值。创新的深度挖掘器可以使用“关键字属性”来确定搜索关键字(在哪里搜索)。期望值被表示为“搜索范围”以反映搜索内容不必是单个值,并且“范围属性”可以用于确定搜索范围。可以通过解析结构化客户端查询来从该查询获得搜索属性。自然语言处理引擎可用于从自然语言客户端查询中提取搜索属性。同义词目录或服务可用于将单个参数搜索属性扩展为一组语义相关的搜索属性,扩展本搜索的范围并检索大量相关结果。虽然搜索属性通常是从查询中提取的,但这不是必需的,因为创新的深度挖掘器可以例如基于列评估、基于学习非结构化数据源的映射或基于先前查询的结果而自动生成搜索属性。
“搜索结果”或“查询响应”是指响应于查询而传达的信息。该结果可以是单个数据项,或者是零个或多个数据项的集合。即,具有零个成员的空集可以是有效结果。在所公开示例中,创新的深度挖掘器可以响应于向其发出的数据库查询而从数据源接收搜索结果,并且可以响应于从其接收到的客户端查询而向客户端发送查询响应。搜索结果或查询响应可以包括直接满足发起查询的数据记录,并且还可以包括例如层次结构路径、分数或排名、或域信息的形式的辅助数据。在一些情况下,该响应可以仅包括辅助数据,而不包括任何特定数据记录。为了说明,对客户端查询的响应可以仅指示数据库D1中的表T1,并且非结构化数据源U2中的列C2是搜索给定客户端查询的最佳位置,而不提供表T1或列C2中的任何数据记录。
“搜索域”是可供查询的一组一个或多个数据源。
“软件”是指计算机可执行程序或指令以及相关联的数据结构。软件可以处于活动或静止状态。在活动状态下,软件可以被加载到存储器中,或者可以由一个或多个处理器执行。在静止状态下,软件可以存储在计算机可读介质上,等待发送或执行。软件可以被组织为一个或多个“模块”。模块可以包含一个或多个可执行函数以及针对公共任务或一组相关任务的相关联数据。软件可以作为一项服务提供,这可以由一个或多个模块来实施。
当应用于数据对象时,术语“存储”是指将数据对象的值写入存储介质上的某个位置,而术语“检索”是指从存储介质上的某个位置读取数据对象的值。存储介质的非限制性示例可以包括硬盘或半导体存储器。除其它用途之外,数据对象可以被存储到数据源和缓存中,或从数据源和缓存中检索。
“表”是组织成行(例如,记录)和列(例如,字段)的二维数组。通常,行可以是与表中表示的某类对象的实例相关的记录,而列可以与这些对象的特定属性(字段)相关。为了说明,第m行第k列的字段可以存储第m个对象的第k个属性的值。在示例中,表可以是通过相关联的索引结构访问的行存储表或列存储表。在关系数据库中,某些列可以是关键字。“本地关键字”是指其值唯一指定表中的一条记录的列。“外来关键字”是指作为另一个表的本地关键字的列,允许在表之间形成关系。
术语“跟踪”是指在分层数据源中逐级连续标识实体的操作。跟踪被认为从例如列向上到数据源(层次结构的顶点)行进,并且被认为从层次结构的顶点(数据源)向下到例如列或记录行进。
常规探索方法
图1是从用户角度描述的现有探索方法的流程图。在过程框110处,用户可以启动搜索界面。在框120处,用户可以在搜索界面中输入探索性搜索字符串。在框130处,用户可以在搜索界面中查看搜索结果。在判定框140处,用户可以确定搜索结果是否令人满意。如果搜索结果令人不满意,则该方法可以沿着N(否)分支从框140回到框120,以便用户尝试另一个探索性搜索字符串。替代地,如果在框140处确定搜索结果是令人满意的,则该方法可以沿着Y(是)分支到达框150,其中用户可使用该结果来用于例如分析或呈现。探索性方法高度依赖于用户技能,并且可能会错过可用的良好数据。此外,即使最终找到了好的数据,也可能需要所示循环的多次迭代。在每次搜索迭代扫描数百万甚至数十亿数据记录的环境中,探索可能会消耗大量计算资源。在实践中,探索常常因为过度利用资源而终止,而没有找到最佳甚至令人满意的结果。
示例性结构化数据库
图2是结构化数据库200的图式,示出了适用于所公开技术的示例的特征。图2所示的是表260和模式220、字典230、240和描述250形式的示例性元数据。尽管下面详细描述了单个结构化数据库200,但是搜索域可以合并多个结构化数据库200至201,如图所示,每个结构化数据库根据类似原理来组织,尽管细节可以变化。
模式220可以提供数据库200的组织的总体描述。在示例中,模式220可以列出数据库200中的表,可以至少指示每个表中包括的本地关键字列和外来关键字列,并且可以例如基于本地关键字和外来关键字来指示表之间的关系。尽管一些数据库具有单个模式220,但这不是要求,并且单个数据库可以具有如图所示的多个模式。例如,数据库的用户可能拥有一些共享数据,但有不同的应用程序。单个数据库内的不同模式可以允许用户在其相应的应用程序之间共享数据,而没有维护共享数据副本之间的一致性的开销。作为另一个示例,用户可以具有不同的特权,并且可以使用受限模式来对未经授权的用户隐藏敏感数据。
表字典230可以包含数据库200中的每个表260至261的一条记录,每条记录提供描述相应表的字段。在示例中,这些字段可以指示标识符、名称、存储类、每个表的维度、访问限制或相关联的模式220。表字典230本身可以被组织为表。尽管一些数据库200可以具有单个表字典230,但是其它数据库可以具有多个表字典230,例如每个模式220一个表字典。
列字典240可以包含表260的每一列的一条记录,每条记录提供描述相应列的字段。在示例中,这些字段可以指示标识符、名称、数据类型、大小以及指示该列是否是本表260的本地关键字、外来关键字(例如,另一个表261的关键字)或两者都不是的标志。对于枚举数据类型,列字典可以指定允许值的列表。列字典240本身可以被组织为表。虽然一些数据库可以对于每个表260至261具有单独的列字典240,但这不是要求,并且公共列字典240可以包括数据库200的所有表的条目。“表”的附加字段可用于区分表260的列的记录与表261的列的记录。
描述250可以包含对表、列、关系、管理信息或与数据库200相关的任何其它描述性材料的纯文本描述。
元数据220、230、240、250的以上描述和组织仅仅是示例性的。可以利用与所公开技术一致的多种变化和扩展。例如,一些表字典信息可以被嵌入到模式220内,或者描述可以适当地与表字典230和列字典240一起嵌入。此外,为了清楚地说明,图2示出了数据库200内的所有元数据220、230、240、250。然而,在实践中,这些元数据可以分布在所部署的数据库200内部和外部。例如,模式220可以在数据库200内,而字典230、240和描述250可以存储在数据库200外部或旁边。外部元数据在组织、可访问性或存储方面可以具有更大的灵活性。在进一步的示例中,数据库200可以与附加元数据相关联,该附加元数据例如与安全、管理或访问方法有关。更进一步,附加元数据可以增强数据库200的功能性。例如,命名实体列表可以促进自然语言查询的使用。各个列的最常见值的列表可以促进相关性的确定。
最后,表260至261包含数据库200的用户数据。每个表可以按行和列进行组织,其中每一行262提供表格260的一条记录,并且包含具有相应值的多个字段264。在图2的水平方向上,任何给定记录262由其相应字段264的值来定义。在垂直方向上,列266由同类字段264形成。
示例性非结构化数据源
图3是非结构化数据源的图式300,示出了适用于所公开技术的示例的特征。因为非结构化数据源跨越广泛的组织(例如,对象存储、文档存储、集合)和实施方式(例如,),所以图3的描述依赖于通用术语和概念。为了清楚地说明,通用术语(例如,数据池、记录)被补充有对具有键-值对形式的单独数据项的说明性文档集合特有的术语。图3中示出了数据池(集合)360至361。如图所示,每个数据池(集合)可以包含其自己的映射310,但这不是要求。在其它示例中,映射310可以与模式220存储在表260至261旁边的方式类似的方式存储在数据池360至361旁边。下文描述单个非结构化数据源300,然而,如图所示,搜索域可以合并多个非结构化数据源300至301,每个非结构化数据源根据类似原理进行组织,尽管细节可以变化。
数据池(集合)360包含记录(文档)362至363形式的用户数据,每个记录(文档)包括一个或多个字段364。记录362至363可以分别是:具有相同、类似或不同组织的任意组合的文档、媒体对象、数据结构形式的主要数据对象;主要数据对象块;或从主要数据对象中提取的派生数据对象的任意组合。不管形式如何,每条记录(文档)362至363都包含可以被视为相应字段(关键字)364的值的信息。如图3所示,记录(文档)362至363可以具有不同的数据字段364。字段364被示出为组织为列366至368,每一列具有同类字段(例如,具有公共关键字的键-值对)。如图所示,记录(文档)362至363在列366中都有数据项(键-值对);仅记录(文档)363在第367列中具有数据项364;记录362在列368中具有两个数据项364,而记录363则没有。记录(文档)362至363的不同组成不适合图2的表格组织。虽然一些非结构化数据源可以被组织为单个池(集合)360,但这不是要求,并且在其它示例中,可以如图所示实施多个数据池(集合)360至361。例如,主要数据对象和派生数据对象可以存储在不同的池中,这由不同的访问方法支持。
作为说明,记录(文档)363可以是在列366至367中分别具有键-值对{“姓名”:“James”、“联系人”:“房间134”}的用户记录;并且记录(文档)362可以是在列366和368中具有键-值对{“姓名”:“Michael”、“联系人”:“电话9-0360”}的另一个用户记录。在示例中,集合360至361可以被指定为JSON、CSV、XML或其它文本或二进制格式。
映射310可以提供定义、组织、关系和/或访问方法,以检索记录362至363、字段364的值、或数据源300的组织信息。因此,映射310提供与数据库200中的模式220、字典230至240和描述250类似的功能性。由于非结构化数据源固有的灵活性和可变性,映射310还可以提供对于特定数据源部署300来说唯一的访问支持。在一些示例中,映射310可以仅提供访问方法,而不揭示数据池360至361的任何底层结构或其中的内容。
所公开技术的示例可以学习映射310,以便标识相关列,并且此后针对这些列运行数据库查询。为了说明,在部署中,诸如Atlas和Variety的工具可以为学习映射310提供便利。在/>部署中,诸如HCatalog、Hive、Zookeeper和HBase的工具可以提供类似的功能。
第一示例性方法
图4是根据所公开技术的用于响应客户端查询的第一示例性方法的流程图400。在该方法的示例中,确定在哪里搜索以满足客户端查询,相应地进行搜索,并且基于搜索结果和唯一地标识从何处获得结果的层次结构路径,制定和发送响应。
在过程框410处,从搜索域中直接标识与客户端查询相关的一个或多个列。可以基于从客户端查询中提取的搜索属性来标识列。为了说明,对于关于特定汽车的悬架问题的客户端查询,与问题(例如,问题描述)、悬架(例如,子总成)或车辆(车辆标识号(“VIN”)、车辆型号)相关的列全都可以提供相关信息。
客户端查询可以由客户端发起,并且如本文描述,搜索域可以包括客户端被授权访问的一个或多个数据源。对于结构化数据源(诸如关系数据库),列可以是表的一部分,而表进而可以在数据库模式下组织。如本文描述,可以通过评估例如列的名称或描述来直接标识列,而不对表、模式或任何其它包含实体的相关性进行任何评估。从概念上讲,这可以被理解为将所有可用列的标识符收集到大量列中,并评估每个列,而不考虑其父表、模式或其它包含实体。在示例中,列集合可以包括列的标识符或描述。在示例中,列集合可以包括诸如给定列的允许值或最常出现的值之类的信息。(然而,可以排除特定记录的字段值。)在实践中,列集合不需要物理上收集在一起。相反,可以遍历数据库组织(例如,模式、字典或表),并且可以评估所有遇到的列。类似地,对于非结构化数据源,可用列可以具有与数据库表和模式不同的包含实体。例如,非结构化数据可以具有数据记录或文档池,而没有表组织,或者可以采用灵活的模式,或者多种其它形式的数据组织。
在过程框420处,对所标识的列执行数据库查询以获得客户端查询的结果。如本文所讨论的,数据库查询可以具有一个或多个搜索关键字(例如,所标识的列)和对应的搜索范围(例如,在该列中查找的值)。在该图示中,第一数据库查询可以在VIN列中搜索值1FTYR10XXYPC06335,而第二数据库查询可以在子总成列中搜索值“悬架(suspension)”。在示例中,可以形成并执行更复杂的数据库查询。为了说明,服务记录表可以同时具有VIN和子总成列,并且数据库查询可以搜索在相应列中同时包含“子总成”和指定VIN两者的记录。更进一步,两个或更多个表可以连接到一个视图中,并且数据库查询可以对该视图执行多列查询。在一些示例中,结果可以是满足数据库查询的记录,但这不是要求的,并且在其它示例中,结果可以是包含实体包含该记录,并且在进一步的示例中,结果可以只是记录的部分。为了说明,在制造年份列中搜索范围2010至2015可仅返回结果(例如,2012)和任选地返回关键字标识符,从而将记录的进一步检查留给后续查询。模糊搜索(例如,在问题描述列中)可以进行类似处理。
在过程框430处,可以确定结果的层次结构路径。如本文所描述的,给定结果的层次结构路径可明确且唯一地标识结果的位置。为了说明,数据库记录的层次结构路径可以是包含标识其包含表、模式和数据库的信息的字符串,以及任选地包括被执行数据库查询的列。
在过程框440处,可以至少部分地基于结果及其层次结构路径来制定响应。在一些示例中,对于每个数据库查询,该响应可以包括满足数据库查询的数据记录的列表以及相关联的层次结构路径。在其它示例中,数据记录可以被扩充到整个表中,使得可以针对类似的记录检查包含本数据库查询的命中的表。如果记录或结果在一列、两列或多列中具有匹配项,则它们被视为“类似”。在进一步的示例中,该响应可以应用列或数据记录结果的排名,并且可根据排名对结果进行排序或过滤,以包括在响应中。
在过程框450处,可以发送响应。通常,可将响应发送回发起客户端查询的客户端,但这不是要求的。在一些示例中,客户端查询的生产者可以与响应的消费者不同。即,生产者和消费者可以是不同的人、不同的软件应用程序、或者人和软件应用程序的任意组合。该响应也可以多播到多个目的地。作为另一说明,大量结果集合可以存储在存储库中,并且到该结果集合的链接可以返回到发起客户端。
在所公开技术的范围内可以实施多种变化或扩展。在一些示例中,客户端查询可以是自然语言查询,而在其它示例中,客户端查询可以是结构化查询,诸如SQL查询或查找查询。在一些示例中,搜索域可以包括多个数据源、或者至少一个结构化数据库和至少一个非结构化数据源,而在其它示例中,搜索域可以是单个数据源,无论是结构化的还是非结构化的。
对于具有一个或多个字典的结构化数据库,可以从对应的字典中找到可用的列,并从中标识出相关的列。为了说明,服务记录表可以有字典,将其列公开为:记录号(本地关键字)、创建日期、VIN、型号、型号年份、问题描述、子总成、状态、服务设施、技术人员、完成日期。其中VIN和子总成列可以被标识为与本客户端查询相关。
对于非结构化数据源,在直接标识之前,可以先学习数据源的映射。在不同的示例中,映射可以是数据(例如,一个或多个数据结构)或方法(例如,API)的形式。如本文描述,可以自下而上或自上而下地学习映射。为了说明前一种方法,可以使用查询db.collection.find(“ALEX”)来搜索值等于“ALEX”的所有键-值对,并且可以向上跟踪这些键-值对以标识父记录(文档)和数据池(集合)。在/>环境中,诸如HCatalogAPI和Hive API的各种工具同样可用。然后,可以使用映射来标识非结构化数据源中的列。其中可以基于与结构化数据库类似的评估来标识相关列。
在一些示例中,可在框410之前从发起客户端接收客户端查询。接收可以是直接的或间接的,后者的示例包括通过防火墙、网关或负载平衡器接收。在一些示例中,发起客户端可能具有预先存在的证书。搜索域可以基于与发起客户端相关联的证书来确定,每个证书存储发起客户端对于相应的一个或多个数据源的授权。在其它示例中,可能不存在预先存在的证书,或者发起客户端可能希望添加或修改现有授权。在此类情况下,发起客户端可以提供新的或更新的授权,这些授权可以在证书中捕获并存储在存储库中以供将来使用。
在一些示例中,给定结果是从对给定标识列的数据库查询获得的,并且可以通过从该列向上跟踪到父数据源来确定层次结构路径。对于结构化数据库,这可能涉及给定列、其父表、模式和数据库的聚合(例如,连接测试字符串或二进制编码标识符)。对于非结构化数据源,层次结构路径的链也可以从列向上跟踪到数据源,尽管中间包含实体可能有所不同。
在一些示例中,根据预定标准为多个标识的列分配排名并且制定是基于排名的。为了说明,排名可以基于列标识符或描述与搜索属性之间的匹配的相似性。例如,如果搜索属性是“VIN”,则标签列“VIN”可以获得最大分数,例如,100,而标签为“VIN#”的列可以获得95分,标签为“车辆标识符”的列可以得到80分,并且标签与VIN无关但描述包括“车辆标识”的列可以获得50分。即,匹配的相似度可以在词汇上(例如,VIN与VIN#)或语义上(例如,VIN与车辆标识符)来确定。可以根据分数来分配排名。如图所示,可以根据列的相似度分数对列进行排名,因此100>95>80>50。在进一步的示例中,可以根据包含实体的相关性对列进行排序。在所示的示例中,来自服务记录表的列的排名可以高于来自运输记录表的列的排名。
在其它示例中,可以在执行数据库搜索之后例如基于结果的数量、结果的质量、数据库查询的复杂性(更复杂的查询通常导致具有更大相关性的命中)对列进行排名。在进一步的示例中,可以对结果进行排名。为了说明,在由单个查询或不同数据库查询产生的多个数据记录中,与较新的日期相关联的数据记录可以被分配比较旧的记录更高的排名,或者数据记录可以根据其与除了本数据库查询中的那些搜索属性之外的搜索属性的相关性来排名。为了说明,VIN搜索产生的与悬架问题相关联的记录的排名可能高于与换油相关联的记录的排名。与模糊搜索精确匹配的记录的排名可比具有近似匹配的记录的排名更高。
制定的响应可以取决于列或结果的排名。结果可以根据排名来排序。排名较高的列或结果可以在响应中较早地呈现(例如,靠近响应的开头或顶部)。结果可以根据排名来过滤。为了说明,只有预定数量或量(例如,前10个、前100个、前20兆字节或类似)的结果可以被包括在响应中。替代地或另外,只有排名或分数高于阈值的结果或列可以被包括在响应中。在上面的VIN图中,阈值分数为75可以排除分数仅为50的最后一列。此外,可以在执行数据库查询之后执行列的过滤,因为在一些情况下,排名较高的列可能无法产生足够数量或质量的结果。
更进一步地,制定的响应可以包括最高排名列或结果的包含实体。为了说明,当没有其它列返回超过五个结果时,返回20个结果的列可以是排名最高的列。然后,包含该列的整个表可以合并到制定的响应中。该制定可以包括将该包含实体(例如,表或其它数据结构)转译成由发起客户端指定的格式。
在一些示例中,可以利用附加的数据库查询来扩展第一种方法。为了说明,在制造数据源中找到VIN可导致记录标识制造工厂和制造日期,而在材料数据库中找到悬架子总成可导致记录标识悬架中使用的零件。这些相关联字段中的一者或两者可以用作第二搜索属性,从第二搜索属性中标识附加列,并对附加列进行第二轮数据库查询。为了说明,第二轮数据库查询可以生成附加结果,例如,标识具有类似构建零件和/或类似制造时间和地点的车辆,该附加结果可以由客户用于进一步分析。该响应还可以包括附加结果及其相应的层次结构路径。
在进一步的示例中,第一方法可以与缓存能力集成。为了说明,导致搜索“悬架”或特定型号的客户端查询可能会出现多次。为了避免重复执行的低效率和资源浪费,可以维护缓存。可以使用以下一项或多项的任意组合来更新缓存:客户端查询、所标识的列、数据库查询、结果、层次结构路径、或与列或结果相关联的排名。在悬架示例中,第二类似查询可以重用缓存的项目,诸如:标识的列、数据库查询或结果。用于处理第二查询的进一步操作可以限于搜索域的增量。为了说明,可以重用第一客户端查询的缓存列,并且可以将列的进一步评估限制为自从第一次查询以来新添加的列,或标签或描述已更改的列。在缓存的列上,来自第一客户端查询的数据库查询可以被重用,但仅对自从第一次查询以来新添加或修改的包含实体的部分(数据记录)执行数据库查询。同样,缓存的结果和缓存的层次结构路径也可以重用于第二次查询。缓存还可以维护查询日志,提供对频繁发生的客户端查询、搜索属性或提供高排名结果的列的指示。
在一些示例中,第二次查询可以与第一次查询相同(例如,如果同一车辆一年后回来时具有相同或类似的悬架问题),但这不是要求的。当第二次查询与第一次查询重叠时,可以重用缓存的数据。当第一次查询和第二次查询具有公共搜索属性或搜索关键字时,可能会发生重叠。为了说明,当同一车辆因不同问题返回时,可以重用与VIN相关的列和结果,或者当具有不同VIN(甚至不同型号)的车辆出现悬架问题时,可以重用与悬架相关的列和结果。因此,可以通过接收与第一客户端查询重叠的第二客户端查询来扩展该方法。考虑到第一客户端查询的数据库查询中的给定数据库查询是针对搜索域中的给定数据源的给定列,可以响应于第二客户端查询而再次执行给定数据库查询以获得增量结果,尽管是在给定数据源的增量而不是整个给定数据源上执行给定数据库查询。在一些实例中,可以从缓存中检索给定列的层次结构路径,并且该扩展方法可以从第一客户端查询中检索缓存的结果并从缓存中检索层次结构路径。可以至少基于增量结果、检索到的结果和检索到的层次结构路径来制定第二响应。
在附加示例中,搜索域可以包括多个数据源,这些数据源之间可以具有不同的格式。然后结果可以通用的中间格式缓存。搜索域中的至少一个数据源可能不支持通用中间格式。通用中间格式可以应用于以下一项或多项的任意组合:客户端查询、搜索属性、列标识符、数据库查询、结果(例如,与实例数据库搜索匹配的记录的标识符或整个记录)、表或其它包含实体或整个包含实体)的标识符或层次结构路径。即,通用中间格式不限于结果。在一些示例中,通用中间格式可以是基于文本的格式,诸如JSON。响应或其一部分可以从通用中间格式转译为客户的优选格式。
在一些示例中,可以根据约束来规划数据库查询。由于数据库查询的执行会消耗处理器使用率、存储使用率和网络带宽等形式的资源,因此一些查询计划可能比其它查询计划更有效。为了说明,计划优化器可以确定给定查询可能需要扫描一百万条记录,这可能需要多次查询迭代。数据源可以强制每次迭代的批量大小为一千条记录,在这种情况下将需要一千次迭代。规划工具可以优化这些迭代在多个处理器和线程之间的串行-并行分布。一个线程连续发出一千次迭代可能会超过预定的完成时间,而一个处理器上的一千个线程可能会引起线程之间不可接受的争用开销,最终导致更长的完成时间。更进一步地,在一千个处理器上各自运行一个线程可能会超出可用处理器的数量(例如,20个)。在评估替代方案之后,计划优化器可以根据这些和其它约束来确定数据库查询的最佳解释。因此,约束的非限制性示例可以包括完成时间、处理器开销、线程数量或处理器数量。在本图示中,各自位于十个处理器上的十个线程(每个线程顺序地发出十次查询迭代)可被发现是最佳的-满足预定的所需完成时间,其中线程间处理器争用保持在预定限制以下,并让其它十个处理器自由地执行其它任务。
第二示例性方法
图5是用于响应从客户端接收的客户端查询的第二示例性方法的流程图500。在该方法的示例中,从两个不同的数据源获得结果,一个数据源是结构化数据库,而另一数据源是非结构化数据源。结果经过核对后发送给客户端。框510至525涉及结构化数据库上的操作,而框540至555涉及非结构化数据源上的操作。
最初,客户端被授权访问多个数据源,该多个数据源至少包括结构化数据库和非结构化数据源。客户端提供与至少一个搜索关键字(例如,“VIN”)和搜索范围(例如,1FTYR10XXYPC06335)相关联的查询。
在框510处,使用结构化数据库的字典来查找与搜索关键字相关的第一列。如上文所示,这可以是结构化数据库中标记为“VIN#”的列。在框515处,可以针对搜索范围的第一列(例如,特定的VIN号)来规划第一数据库查询。在框520处,可以执行第一数据库查询以获得第一结果。在框525处,可以跟踪第一结果的第一层次结构路径。
类似地,在框540处,使用非结构化数据源的元数据(例如,映射310)来查找与搜索关键字相关的第二列。如上所示,这可以是非结构化数据源中的一列,其描述包括“车辆标识”。在框545处,可以针对搜索范围的第二列(例如,特定的VIN号)来规划第二数据库查询。在框550处,可以执行第二数据库查询以获得搜索范围内的结果。在框555处,可以跟踪第二结果的层次结构路径。
当第一结果和第二结果以及它们相应的层次结构路径全部可用时,该方法可以从流程图连接570继续进行到框575,其中可以将第一结果和第二结果核对成响应。在附加示例中,本方法可以被扩展以从附加数据源获得并核对附加结果,如箭头527、557所示。最后,在框580处,可以将合并了结果和它们相应的层次结构路径的响应发送到客户端。
可以在所公开技术的范围内实施多种变型或扩展,包括这里描述的一些、图4的上下文中描述的一些以及本文别处描述的一些。
在一些示例中,可以直接执行在框510查找第一列,绕过对包含第一列的任何数据结构的评估(与搜索属性的相关性)。在进一步的示例中,可以直接执行在框540查找第二列,绕过对包含第二列的任何数据结构的评估(与搜索属性的相关性)。在一些示例中,结果的层次结构路径可以是对应的搜索列与该列的层次结构路径的聚合,并且框525可以在框510之后直接执行、在框515、520的执行之前或与其同时执行。在其它示例中,层次结构路径可以依赖于两个表的连接(或对非结构化数据源的类似推导操作),并且可以在确定连接的视图之后但仍在到达流程图连接570之前的任何时间跟踪层次结构路径。
在附加示例中,本方法可以被扩展以从附加数据源获得并核对附加结果,如箭头527、557所示。
示例性部署环境
图6是示出示例性深度挖掘器部署场景的合成图600。示出了两个挖掘器640、670,每个挖掘器都实施所公开技术的示例,并且在搜索域605上操作。搜索域605仅仅是说明性的,并且可以因客户端查询而异。
说明性地,搜索域605被示出为具有多个结构化数据库610和多个非结构化数据源620,但这不是要求的。在其它示例中,可以使用单个数据库或数据源、或者数据库或数据源的任何其它组合。结构化数据库610可以类似于本文描述的数据库200,并且可以包括一个或多个字典612。非结构化数据源620可以类似于本文描述的非结构化数据源300,并且可以包括一个或多个映射622。
从图6的左侧开始,深度挖掘器670充当独立服务,其可以在数据中心或云计算环境中的真实或虚拟服务器计算机上实施。深度挖掘器670可以通过网络665从一个或多个客户端680接收客户端查询。在示例中,深度挖掘器670可以托管在云中。
在图6的右侧,深度挖掘器640在主机计算环境635内操作。即,深度挖掘器640可以从也在主机环境635内的一个或多个客户端650(其可以是用户或软件应用程序的任何组合)接收客户端查询,并且深度挖掘器640的功能不能从主机环境外部访问。
搜索域605被示出为与主机环境635部分重叠,以指示深度挖掘器640可以访问数据源的混合:以任何组合,一些在主机环境635内和/或一些在外部,包括在云中。类似地,独立的深度挖掘器670可以访问共置或广泛分布的数据源,包括在一些示例中位于环境635的网关后面。
无论部署环境如何,深度挖掘器640、670都可以实施安全措施,例如证明相应客户端650、680对搜索域605中的数据源可能具有的授权的证书。
第三示例性方法
图7是第三示例性方法的流程图700,该方法从会话角度提供示例性深度挖掘器的操作概览。该方法涵盖从启动挖掘服务到完成搜索程序的操作阶段,省略了本文别处描述的搜索操作的细节。在示例中,该方法的某些先决条件可以包括:启用深度挖掘和缓存,并且客户端对其授权数据源具有低级别的访问权限。
最初,在过程框710处,深度挖掘器(例如,640、670)可以作为服务启动。该服务可以响应于通过连接从代表用户的客户端接收的请求或命令而启动。在判定框715处,挖掘服务可以确定已代表其服务已启动的用户是否是该服务的首次用户。
如果用户被确定为首次用户,则该方法可以沿着Y(是)分支从框715到框770,其中导入和/或创建用户的一个或多个证书。证书提供对用户已被授权访问一个或多个数据源的指示。在示例中,证书可以包括这些源的证书,而在其它示例中,深度挖掘器可以被数据源信任并且不需要存储证书以供重复使用。在一些示例中,可以通过基于在其上将用户连接到深度挖掘器的连接填写模板来创建证书。在其它示例中,连接信息可以从客户端导出到深度挖掘器,并用于创建证书。在进一步的示例中,客户端可以直接将证书导出到深度挖掘器。然后,在框775处,可以将证书存储在证书存储库中,并且继续进行到框780,可以通过客户端的连接启动深度挖掘器的搜索界面。该方法进行到框730。
返回到判定框715,如果确定用户具有预先存在的证书或者例如作为重复用户为挖掘器所知,则该方法可以沿着N(否)分支到过程框720,其中类似于框780,可以启动搜索界面。然后,在框725处,重复用户可以任选地更新他们的证书。在一些示例中,在框725处,还可以向用户提供为当前查询会话选择或取消选择特定数据源的机会。该方法进行到框730。
在框730处,可以启动列搜索服务。如本文描述,列驱动的搜索可以提供对有用搜索结果的更有效的发现,同时显著节省计算机资源—多达一个数量级或更多。因为尚未接收到客户端查询,所以框730可以被限于初始化动作。
在框735处,可以通过客户端连接接收客户端查询。在汽车示例中,客户端查询可以请求与由VIN(车辆标识号)标识的车辆遇到的悬架问题有关的信息。基于该客户端查询,深度挖掘器可以在框740处执行列驱动的挖掘以获得搜索结果。框740的示例性细节在本文别处描述。
在一些示例中,挖掘搜索的结果可用于经由可选箭头743驱动框740的第二次迭代。例如,如果VIN被标识为特定型号车辆M并且发现悬架问题与特定更换零件P相关联,则框740的第二次迭代可以搜索涉及零件P和型号M的服务记录。即,第二次迭代可以定位与来自框735的客户端查询相关的记录,即使第二次迭代的参数都不能直接从客户端查询导出也是如此。与图1的探索性迭代(其是经用户引导的并提供客户端查询的特别细化)不同,挖掘搜索740的迭代743可以是自动化的,并且可以少得多的计算机利用率快速收敛到相关数据,即使对于非专家用户也是如此。
在挖掘搜索的一次迭代(或者任选地,多于一次迭代)之后,还可以在框740处基于搜索结果来制定响应。制定可能需要各种活动,包括但不限于:排名、排序(例如,基于排名)、过滤、将结果扩展为包含实体、或转译为客户所需的格式、风格或语言。具体地,挖掘搜索迭代可以包括单个数据记录,并且这可以被扩展以包括例如包含该数据记录的父表。即使附加记录可能与客户端查询不匹配,该技术也可以提供可能与客户端查询相关的结果。在一些情况下,扩展结果可能会有所帮助,允许客户在深度挖掘器环境之外进行进一步的调查。在其它情况下,包含表可能大得不合理,并且用户可以经由循环743从细化搜索中获得更多益处。因此,将结果扩展到表或其它包含实体中可以作为经由环回路径743的后续迭代的替代或补充来执行。
在过程框745处,可以发送制定的响应。尽管通常可以将响应从框735处的客户端查询发起的位置传回客户端或用户,但这不是要求的。如本文描述,在一些场景中,可以将响应发送到替代目的地。
与类似于图1的常规用户驱动探索方法相比,所公开技术通常在收敛或计算机利用率方面提供一个数量级或更好的改进。然而,不排除客户端或用户在单个会话中利用所公开的深度挖掘器执行附加迭代。具体地,客户端或用户可以接收来自框745的响应,在框760处执行评估,并且该方法可以此后经由路径763继续回到框735,其中第二客户端查询可以由挖掘器接收。在一些情况下,客户端或用户可能寻求在多个客户端查询之间划分较大的搜索程序,并且第二次查询可以是预定的。在其它情况下,客户端或用户可以基于对第一客户端查询的响应制定第二客户端查询,例如基于对第一响应的分析来细化或重定向搜索。为了在悬架问题场景中进行说明,用户可以从第一响应中辨别出潜在的问题可能与特定零件供应商相关联,并且第二客户端查询可以寻求关于涉及相同零件供应商的其它问题(不限于悬架)的信息。说明性地,第一次查询的结果可以从结构化数据库(例如,制造商的缺陷日志)中出现,而第二次查询可以从非结构化数据源生成结果(例如,信件或其它文档)。
第四示例性方法
图8是第四示例性方法的流程图800,示出了类似于图7的框740、745的挖掘搜索程序的附加细节。该方法涵盖在接收到客户端查询后直到查询处理完成为止的操作阶段。
该方法在创新的深度挖掘器接收到客户端查询之后开始,这类似于图7的框735。在框810处,可以从可用数据源中标识与客户端查询相关的列。在示例中,这可能需要以下一项或多项:(i)例如从一起构成搜索域的客户端或用户证书标识可用数据源,(ii)从客户端查询中提取搜索属性,(iii)枚举可用数据源中的每一者的可用列,(iv)评估可用列中的每一者与搜索属性的相关性,或(v)基于相应的评估在可用列中选择相关列。任选地,框810可以涉及学习任何非结构化数据源的映射以促进项目(iii)或(iv)。可以使用非结构化数据源的设施、或者通过检索先前由深度挖掘器存储在缓存中的映射信息来学习映射。
当相关列可用时,该方法可以进行到框820,其中可以为相关列中的每一者开发数据库查询。在示例中,对于每个相关列及其相应的数据源,这可能需要以下一项或多项:(i)确定本列的搜索关键字和搜索范围,(ii)根据数据源的规则确定用于查询该列的模式,(iii)确定将搜索该搜索关键字和搜索范围的查询计划,并且可以任选地包括根据该模式满足任何先决条件,(iv)例如使用数据源提供的资源进行计划优化,或(v)例如也使用数据源提供的资源并且根据适用的约束条件进行计划解释。任选地,还可以在框820处执行域分析或层次结构路径确定。确定查询模式的任务(ii)可以基于供应商提供的API,因为构造和执行数据库查询所需的先决条件以及满足这些先决条件的预期过程可能存在变化。在一些示例中,可以将一系列查询通过管道连接在一起以完成期望的数据库查询。类似地,任务(iv)计划优化和(v)计划解释可以利用供应商提供的可用工具。
在框830处,可以对相应的数据源执行数据库查询,以获得相应的搜索结果。
在框840处,可以理解结果。在示例中,对于每个数据库查询,这可能需要以下一项或多项:(i)将结果转译为通用中间格式,(ii)跟踪层次结构路径,(iii)将结果扩展为包含表格或数据池,(iv)将结果与来自其它数据源的结果进行比较,(v)对结果进行排名,(vi)例如根据排名过滤结果,或(vii)更新缓存。任选地,结果的分析可使用更新的搜索属性或者使用修改的搜索域触发本方法的另一次迭代。
在框850处,可以制定响应。在示例中,这可能需要以下一项或多项:(i)将理解的结果转译成输出格式,或(ii)根据客户端模板组织结果。制定的响应可以被交付到例如发起客户端查询的客户端。可以通过网络发送来进行交付。
最后,在框860处,该方法可以结束,其可以包括各种交付后的活动。在示例中,框860可以包括以下一项或多项:(i)将以下任一者添加到缓存:来自先前框810至850的映射、查询、结果或辅助信息,(ii)检查数据源以检测过时的缓存信息,(iii)缓存维护,或(iv)维护性能日志以指导例如框820处的未来查询开发。
如本文进一步描述的,可以在所公开技术的范围内实施多种变化或扩展。值得注意的是,框810至860中的每个框内的详细动作可以许多替代方式分布在这些框之间。
第四方法的示例性细节
图9至10是提供图8的方法的示例性细节的流程图900、1000。图9的过程框实施框810的用于标识相关列的示例,而图10的框实施框840的用于摘要来自数据库查询的结果的示例。
图9在接收到客户端查询之后开始,例如在类似于图7的735的框处开始。在过程框911处,标识形成搜索域的数据源。在示例中,这些数据源可以根据客户端的证书来确定,或者可以由用户通过类似于框720的挖掘器的搜索界面交互地设置。如果用户尚不存在证书,则可提示用户输入证书。可以确定每个源的类型,包括数据源是结构化的还是非结构化的,是底层技术还是供应商平台。
在框912处,可以为搜索域中的任何非结构化源学习相应的映射。在框913处,可以枚举搜索域中的所有可用列。如本文描述,可以在框915从客户端查询中单独地提取搜索属性。然后,在框917处,可以评估可用列以确定它们与搜索属性的相关性。如本文描述,可以基于包括与搜索属性的词汇或语义匹配的多种因素来计算每一列的分数。可用于匹配的列信息可以包括列标签、列字典、描述、列的分类值、最常出现的值。任选地,还可以考虑其它查询中的列的先前历史,或者父实体的其它列的分数。最后,在框919处,可以基于相关性分数来选择可用列的子集。在示例中,可以选择列,使得对于每个搜索属性或者对于每个数据源至少存在预设的最小数量的列。在示例中,选择列而不对其包含实体进行任何相关性的确定,这在本文中被描述为直接标识。
搜索域、搜索属性、选定列和任何学习的映射可以被转发到图8的框820,以用于开发和执行针对选定列的数据库查询。
在所公开技术的范围内可以实施多种变化或扩展。因为框911至913可以独立于客户端查询,所以这些框中的一者或多者可以被执行一次并且并被存储在给定客户端或用户的缓存中,以供框810处的后续检索使用。在其它示例中,框913、917可以在框915之后一起执行。每一列的相关性分数可以在枚举时进行评估。在进一步的示例中,还可以在框810处计算选定列的层次结构路径。
转向图10,流程图1000在图8的框830已经获得针对来自框919的选定列的数据库查询的结果之后开始。在框1041处,可以将结果转译成通用中间格式。在示例中,转译的结果可以存储在缓存1049中。在框1042处,可以计算结果的层次结构路径。在一些示例中,可以在数据库查询执行之前(例如在框810处)计算选定列的一些层次结构路径,因此任选框1042以虚线轮廓示出。在框1043处,核对来自多个数据源的结果,并且在框1045对核对的结果进行排名。排名可以基于相关性、基于与一个或多个搜索属性的匹配的接近度、或者本文描述的其它因素。在示例中,在框1045处还可以根据排名对排名结果进行排序。基于排名,可以在框1047处过滤结果。在一些示例中,可以从搜索域中的每个数据源或者针对每个搜索属性保留至少预设最小数量的结果。然后,在一些示例中,可以将整个表而不仅仅是数据库查询的匹配结果返回给请求客户端。在这种情况下,在框1048处可以将剩余结果从记录扩展到表(或数据池)。在其它示例中,可以不进行扩展而直接返回结果,并且可以省略步骤1048。因此,任选框1048以虚线轮廓示出。
如本文描述的,可以在所公开技术的范围内实施多种变化或扩展。在一些示例中,可以在框1047处的过滤之后执行框1043的核对,并且可以按照排名顺序来核对过滤的结果。在其它示例中,可以根据数据源或者根据已被执行相关联的数据库查询的搜索属性来对结果进行分组。
附加示例
以下是所公开技术的附加示例。
示例1是一种计算机实施的方法,其包括:基于从客户端查询中提取的一个或多个搜索属性,从包括一个或多个数据源的搜索域中直接标识与所述客户端查询相关的一个或多个列;对所述标识的一个或多个列执行相应的数据库查询以获得所述客户端查询的结果;确定所述结果的相应层次结构路径;基于所述结果和所述相应层次结构路径制定对所述客户端查询的响应;以及发送所述响应。
示例2包括示例1的主题,并且进一步指定客户端查询是自然语言查询。
示例3包括示例1至2中任一项的主题,并且进一步指定所述一个或多个数据源包括结构化数据库和非结构化数据源。
示例4包括示例1至3中任一项的主题,并且进一步指定所述搜索域包括非结构化数据源,并且所述方法还包括:在所述直接标识之前,学习所述非结构化数据源的映射;其中使用所述映射直接标识所述一个或多个列中以及所述非结构化数据源内的给定列。
示例5包括示例1至4中任一项的主题,并且进一步指定:所述搜索域包括具有一个或多个字典的结构化数据库;以及使用所述一个或多个字典直接标识所述一个或多个列中以及所述结构化数据库内的给定列。
示例6包括示例1至5中任一项的主题,并且还包括:从客户端接收所述客户端查询;以及根据存储所述客户端对所述一个或多个数据源的授权的一个或多个证书来确定所述搜索域。
示例7包括示例1至6中任一项的主题,并且进一步指定所述结果中的一个给定结果是从所述标识的一列或多列中的给定列获得的,并且确定所述给定结果的层次结构路径包括从所述给定列向上跟踪到所述搜索域内的对应数据源。
示例8包括示例1至7中任一项的主题,并且进一步指定:所述标识的一个或多个列包括多个列,并且所述方法还包括:根据预定标准为所述列分配排名;其中所述制定是进一步基于所述排名。
示例9包括示例1至8中任一项的主题,并且进一步指定所述数据库查询是第一数据库查询,所述结果包括给定结果,并且所述方法还包括:生成针对与所述标识的列不同的列的第二数据库查询,以搜索与所述给定结果类似的附加结果;以及执行所述第二数据库查询以获得所述附加结果;其中所述响应包括所述附加结果和所述附加结果的附加层次结构路径。
示例10包括示例1至9中任一项的主题,并且还包括:维护缓存以供将来的客户端查询使用;以及使用以下一者或多者更新所述缓存:所述客户端查询、所述搜索属性、所述标识的列、所述数据库查询、所述结果或所述层次结构路径;其中所述搜索域包括具有不同数据格式的多个数据源,并且来自所述多个数据源的结果以通用中间格式存储在所述缓存中。
示例11包括示例10的主题,并且进一步指定所述客户端查询是第一客户端查询,所述结果是第一结果,所述数据库查询中的一个给定数据库查询是针对第一数据源,并且所述方法还包括:接收与所述第一客户端查询重叠的第二客户端查询;对所述第一数据源的增量执行所述给定数据库查询以获得增量结果;从所述缓存中检索所述第一结果和至少第一层次结构路径;以及基于所述第一结果、所述增量结果和所述第一层次结构路径制定第二响应。
示例12包括示例1至11中任一项的主题,并且进一步指定:所述制定还包括:将排名与所述结果相关联;以及对于所述结果中的一个或多个排名最高的结果,将一个或多个包含数据结构合并到所述响应中。
示例13是一个或多个存储指令的计算机可读介质,所述指令在由一个或多个硬件处理器执行时使所述一个或多个硬件处理器执行用于处理从客户端接收的客户端查询的操作,所述客户端查询与搜索关键字和搜索范围相关联,其中所述客户端被授权访问多个数据源,所述多个数据源包括结构化第一数据源和非结构化第二数据源,并且所述操作包括:使用所述第一数据源的一个或多个字典,查找与所述搜索关键字相关的第一列;为所述搜索范围规划对所述第一列执行的第一数据库查询,所述第一数据库查询的执行导致第一结果;以及跟踪所述第一数据源中的第一结果的第一层次结构路径;使用所述第二数据源的元数据,查找与所述搜索关键字相关的第二列;为所述搜索范围规划对所述第二列执行的第二数据库查询,所述第二数据库查询的执行导致第二结果;以及跟踪所述第二数据源中的第二结果的第二层次结构路径;以及核对所述第一结果和所述第二结果以便通过所述第一层次结构路径和所述第二层次结构路径发送到所述客户端。
示例14包括示例13的主题,并且进一步指定直接执行查找所述第一列,绕过对包含所述第一列的任何数据结构与所述搜索关键字的相关性的评估。
示例15包括示例13至14中任一项的主题,并且进一步指定:直接执行查找所述第二列,绕过对包含所述第二列的任何数据结构与所述搜索关键字的相关性的评估。
示例16是一种系统,其包括:一个或多个硬件处理器,所述一个或多个硬件处理器具有与其耦合的存储器;以及存储指令的计算机可读介质,所述指令在由所述一个或多个硬件处理器执行时使所述一个或多个硬件处理器执行包括以下各项的操作:基于从客户端查询中提取的一个或多个搜索属性,直接标识与所述客户端查询相关的一个或多个列;对所述标识的一个或多个列执行相应的数据库查询以获得所述客户端查询的结果;确定所述结果的相应层次结构路径;基于所述结果和所述相应层次结构路径制定对所述客户端查询的响应;以及发送所述响应。
示例17是一种主机计算环境,其包括:根据示例16所述的系统;以及一个或多个软件应用程序,所述一个或多个软件应用程序被配置为:向所述系统提供多个客户端查询,包括所述客户端查询;以及从所述系统接收对应的多个响应,包括所述响应;其中所述指令不能从所述主机计算环境外部访问。
示例18包括示例17的主题,并且进一步指定所述标识的一个或多个列中的给定列在所述主机计算环境外部。
示例19包括示例16至18中任一项的主题,其充当独立服务运行。
示例20包括示例16至19中任一项的主题,并且进一步指定所述一个或多个列是从包括至少一个结构化数据库和至少一个非结构化数据源的搜索域中标识的。
通用计算机环境
图11示出了合适的计算系统1100的通用示例,其中可根据所公开技术来实施所描述的示例、搜索技术(technique/technology),包括软件的构建、部署、操作和维护。计算系统1100并不旨在对本公开的使用范围或功能性提出任何限制,因为创新可在不同的通用或专用计算系统中实施。
参考图11,计算环境1110包括一个或多个处理单元1122和存储器1124。在图11中,该基本配置1120被包括在虚线内。处理单元1122执行计算机可执行指令,诸如用于实施本文描述的用于挖掘或查询处理的方法或对象中的任一者的指令(包括构建搜索域、处理客户端查询、确定相关列、开发数据库查询、执行数据库查询、摘要结果、制定响应、交付响应、相关联的缓存、维护或学习操作)、或本文描述的各种其它架构、软件组件、处理程序、管理器、模块或服务。处理单元1122可以是通用中央处理单元(CPU)、专用集成电路(ASIC)中的处理器、或任何其它类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以提高处理能力。计算环境1110还可以包括图形处理单元或协处理单元1130。有形存储器1124可以是可由处理单元1122、1130访问的易失性存储器(例如,寄存器、缓存或RAM)、非易失性存储器(例如,ROM、EEPROM或闪存)或其某种组合。存储器1124存储软件1180,该软件以适合由处理单元1122、1130执行的计算机可执行指令的形式实施本文描述的一项或多项创新。存储器1124还可以存储客户端查询、搜索属性、证书、数据源的组织信息、分数、排名、相关列的标识符、搜索关键字、搜索范围、数据库查询、结果、层次结构路径、域信息、响应、缓存的数据;其它配置数据、包括数据表、工作表、更改日志的数据结构、输出结构、数据值、索引或标志,以及其它操作数据。
计算系统1110可以具有附加特征,诸如存储装置1140、输入装置1150、输出装置1160或通信端口1170中的一者或多者。诸如总线、控制器或网络互连(未示出)将计算环境1110的硬件组件互连。通常,操作系统软件(未示出)为在计算环境1110中执行的其它软件提供操作环境,并且协调计算环境1110的硬件和软件组件的活动。
有形存储装置1140可以是可移动的或不可移动的,并且可以包括磁盘、磁带或盒式磁带、CD-ROM、DVD或可用于以非暂时性方式存储信息并且可在计算环境1110内访问的任何其它介质。存储装置1140存储实施本文描述的一项或多项创新的软件1180的指令(包括指令和/或数据)。
输入装置1150可以是机械、触摸感测或接近感测输入装置,诸如键盘、鼠标、笔、触摸屏、轨迹球、语音输入装置、扫描装置或向计算环境1110提供输入的另一个装置。输出装置1160可以是显示器、打印机、扬声器、光盘写入器或提供来自计算环境1110的输出的另一个装置。
通信端口1170使得能够通过通信介质与另一计算装置进行通信。通信介质在调制数据信号中传达诸如计算机可执行指令或其它数据的信息。调制后的数据信号是如下信号:该信号的一个或多个特性以将信息编码在该信号中的方式设置或改变。作为示例而非限制,通信介质可以使用电、光、RF、声或其它载体。
在一些示例中,计算机系统1100还可以包括计算云1190,在其中执行实施所公开技术的全部或一部分的指令。存储器1124、存储装置1140和计算云1190的任何组合可以用于存储所公开技术的软件指令或数据。
本创新可以在计算机可执行指令(诸如包括在程序模块中、在目标真实或虚拟处理器上的计算系统中执行的那些指令)的一般上下文中进行描述。通常,程序模块或软件组件包括执行任务或实施特定抽象数据类型的例程、程序、库、软件对象、类、数据结构等。在各种实施例中,程序模块的功能性可以根据需要在程序模块之间组合或分割。程序模块的计算机可执行指令可以在本地或分布式计算系统内执行。
术语“系统”、“环境”和“装置”在本文中可互换使用。除非上下文另有明确指示,否则这些术语均不暗示对计算系统、计算环境或计算装置的类型的任何限制。通常,计算系统、计算环境或计算装置可以是本地的或分布式的,并且可以包括专用硬件和/或通用硬件和/或虚拟化硬件以及实施本文描述的功能性的软件的任意组合。虚拟处理器、虚拟硬件和虚拟化装置最终体现在硬件处理器或另一种形式的物理计算机硬件中,因此包括与虚拟化相关联的软件和底层硬件两者。
示例性云计算环境
图12描绘了其中可以实施所描述的技术的示例性云计算环境1200。云计算环境1200包括包含资源并提供服务的计算云1290。计算云1290可以包括各种类型的云计算资源,诸如计算机服务器、数据存储库、网络资源等等。计算云1290可以是集中定位的(例如,由企业或组织的数据中心提供)或分布式的(例如,由位于不同位置的各种计算资源提供,诸如不同的数据中心和/或位于不同的城市或国家)。
计算云1290可以可操作地连接到各种类型的计算装置(例如,客户端计算装置),诸如计算装置1212、1214和1216,并且可以向其提供一系列计算服务。计算装置1212、1214和1216中的一者或多者可以是计算机(例如,服务器、虚拟机、嵌入式系统、台式计算机或膝上型计算机)、移动装置(例如,平板计算机、智能手机或可穿戴装置)、或其它计算装置的类型。计算云1290与计算装置1212、1214和1216之间的通信链路可以通过有线、无线或光学链路或其任何组合实现,并且可以是短期的或长期的。通信链路可以是连续的或间断的。这些通信链路可以是固定的,或者可以随着时间的推移而移动,通过不同的路径实施,并且在每一端具有不同的附接点。计算装置1212、1214和1216也可以彼此连接。
计算装置1212、1214和1216可以利用计算云1290来获得计算服务并执行计算操作(例如,数据处理、数据存储等)。具体地,用于执行所描述的创新技术的软件1280可以驻留在计算云1290中、计算装置1212、1214和1216中、或者云和计算装置的分布式组合中或在其中执行。
总体考虑
如在本公开使用的单数形式“一(a/an)”和“该”包括复数形式,除非周围语言另有明确规定。另外,术语“包括”和“结合”意指“包括”。此外,术语“耦合”或“附接”涵盖将物品耦合在一起的机械、电、磁、光学以及其它实际方式,并且不排除耦合的物品之间存在中间元件。此外,如本文所使用的术语“或”和“和/或”意指该短语中的任何一项或多项的组合。
虽然为了方便呈现而以特定的、连续的顺序描述了一些所公开方法的操作,但是应当理解,这种描述方式包含重新排列,除非下面阐述的特定语言要求特定的顺序。例如,依次描述的操作在一些情况下可以被同时重新布置或执行。此外,为了简单起见,附图可能未示出所公开事物和方法可以与其它事物和方法结合使用的各种方式。另外,该描述有时使用如“分配”、“绕过”、“核对”、“组合”、“创建”、“确定”、“评估”、“执行”、“扩展”、“解释”、“过滤”、“查找”、“制定”、“生成”、“标识”、“学习”、“维护”、“修改”、“导航”、“获得”、“优化”、“输出”、“进行”、“规划”、“查询”、“排名”、“读取”、“接收”、“请求”、“响应”、“返回”、“检索”、“搜索”、“选择”、“发送”、“服务”、“排序”、“存储”、“目标”、“跟踪”、“翻译”、“发送”、“更新”、“使用”或“写入”等术语来指示计算机系统中的计算机操作。这些术语表示由计算机执行或控制的实际操作。与这些术语相对应的实际操作将根据具体实施方式而变化,并且是本领域普通技术人员容易辨别的。
为了更好理解的目的,提供了参考本公开的设备或方法在本文中呈现的操作理论、科学原理或其它理论描述,并且不旨在限制范围。所附权利要求中的设备和方法不限于以由此类操作理论描述的方式起作用的那些设备和方法。
在一些示例中,值、程序或设备可以被称为“最优”、“最低”、“最佳”、“最大”、“极值”等。应当理解,此类描述旨在指示可以在几个或许多替代方案中进行选择,并且此类选择不需要比未考虑的其它替代方案更低、更好、更少或更优选。
所公开方法中的任一者可以被实施为存储在一个或多个计算机可读存储介质(诸如有形非暂时性计算机可读存储介质)上并且在计算装置(例如,任何可用计算装置,包括平板电脑、智能手机或包括计算硬件的其它移动装置)上执行的计算机可执行指令或计算机程序产品。有形计算机可读存储介质是可在计算环境内访问的任何可用有形介质(例如,诸如DVD或CD的一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)、或非易失性存储器组件(诸如闪存或硬盘))。作为示例并参考图11,计算机可读存储介质包括存储器1124和存储装置1140。术语计算机可读介质或计算机可读存储介质不包括信号和载波。另外,术语计算机可读介质或计算机可读存储介质不包括通信端口(例如,1170)或通信介质。
用于实施所公开技术的任何计算机可执行指令以及在所公开实施例的实施期间创建和使用的任何数据都可以存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用程序或经由网络浏览器或其它软件应用程序(诸如远程计算应用程序)访问或下载的软件应用程序的一部分。例如,此类软件可以在单个本地计算机(例如,任何合适的市售计算机)上执行或在网络环境中(例如,经由互联网、广域网、局域网、客户端-服务器网络、云计算网络或其它此类网络)使用一个或多个网络计算机来执行。
为了清楚起见,仅描述了基于软件的实施方式的某些选定方面。省略了本领域公知的其它细节。例如,应当理解,所公开技术不限于任何特定的计算机语言或程序。例如,所公开技术可以通过以ABAP、Adobe Flash、Angular、C、C++、C#、Curl、Dart、Fortran、Go、Java、JavaScript、Julia、Lisp、Matlab、Octave、Perl、Python、R、Ruby、SAS、SPSS、WebAssembly、它们的任何派生物、或任何其它合适的编程语言、或者在一些示例中诸如HTML或XML的标记语言、或者合适语言、库和包的任何组合编写的软件来实施。同样,所公开技术不限于任何特定的计算机或硬件类型。合适的计算机、硬件和通信技术的某些细节是公知的并且不需要在本公开中详细阐述。
此外,任何基于软件的实施例(包括例如用于使计算机执行任何所公开方法的计算机可执行指令)可以通过合适的通信手段上传、下载或远程访问。此类合适的通信手段包括例如互联网、万维网、内联网、软件应用程序、电缆(包括光缆)、磁通信、电磁通信(包括RF、微波、红外和光通信)、电子通信、通信或其它此类通信手段。
所公开方法、设备和系统不应被解释为以任何方式进行限制。相反,本公开是针对各种所公开实施例的所有新颖和非显而易见的特征和方面,它们是单独的以及彼此的各种组合和子组合。所公开方法、设备和系统不限于任何特定方面或特征或其组合,所公开实施例也不要求存在任何一个或多个特定优点或解决问题。来自任一示例的技术可以与任意一个或多个其它示例中描述的技术组合。
鉴于可以被应用所公开技术的原理的许多可能的实施例,应当认识到,所示实施例仅是优选示例并且不应被视为限制权利要求的范围。相反,本发明的范围由所附权利要求限定。因此,我们要求保护属于这些权利要求的范围和精神的所有内容。
Claims (20)
1.一种计算机实施的方法,包括:
基于从客户端查询中提取的一个或多个搜索属性,从包括一个或多个数据源的搜索域中直接标识与所述客户端查询相关的一个或多个列;
对标识的一个或多个列执行相应的数据库查询以获得所述客户端查询的结果;
确定所述结果的相应层次结构路径;
基于所述结果和所述相应层次结构路径制定对所述客户端查询的响应;以及
发送所述响应。
2.根据权利要求1所述的计算机实施的方法,其中所述客户端查询是自然语言查询。
3.根据权利要求1所述的计算机实施的方法,其中所述一个或多个数据源包括结构化数据库和非结构化数据源。
4.根据权利要求1所述的计算机实施的方法,其中所述搜索域包括非结构化数据源,并且所述方法还包括:
在所述直接标识之前,学习所述非结构化数据源的映射;
其中使用所述映射直接标识所述一个或多个列中以及所述非结构化数据源内的给定列。
5.根据权利要求1所述的计算机实施的方法,其中:
所述搜索域包括具有一个或多个字典的结构化数据库;并且
使用所述一个或多个字典直接标识所述一个或多个列中以及所述结构化数据库内的给定列。
6.根据权利要求1所述的计算机实施的方法,其还包括:
从客户端接收所述客户端查询;以及
根据存储所述客户端对所述一个或多个数据源的授权的一个或多个证书来确定所述搜索域。
7.根据权利要求1所述的计算机实施的方法,其中所述结果中的一个给定结果是从所述标识的一列或多列中的给定列获得的,并且确定所述给定结果的层次结构路径包括从所述给定列向上跟踪到所述搜索域内的对应数据源。
8.根据权利要求1所述的计算机实施的方法,其中所述标识的一个或多个列包括多个列,并且所述方法还包括:
根据预定标准为所述列分配排名;
其中所述制定是进一步基于所述排名。
9.根据权利要求1所述的计算机实施的方法,其中所述数据库查询是第一数据库查询,所述结果包括给定结果,并且所述方法还包括:
生成针对与所述标识的列不同的列的第二数据库查询,以搜索与所述给定结果类似的附加结果;以及
执行所述第二数据库查询以获得所述附加结果;
其中所述响应包括所述附加结果和所述附加结果的附加层次结构路径。
10.根据权利要求1所述的计算机实施的方法,其还包括:
维护缓存以供将来的客户端查询使用;以及
使用以下一者或多者更新所述缓存:所述客户端查询、所述搜索属性、所述标识的列、所述数据库查询、所述结果或所述层次结构路径;
其中所述搜索域包括具有不同数据格式的多个数据源,并且来自所述多个数据源的结果以通用中间格式存储在所述缓存中。
11.根据权利要求10所述的计算机实施的方法,其中所述客户端查询是第一客户端查询,所述结果是第一结果,所述数据库查询中的一个给定数据库查询是针对第一数据源,并且所述方法还包括:
接收与所述第一客户端查询重叠的第二客户端查询;
对所述第一数据源的增量执行所述给定数据库查询以获得增量结果;
从所述缓存中检索所述第一结果和至少第一层次结构路径;以及
基于所述第一结果、所述增量结果和所述第一层次结构路径制定第二响应。
12.根据权利要求1所述的计算机实施的方法,其中所述制定还包括:
将排名与所述结果相关联;以及
对于所述结果中的一个或多个排名最高的结果,将一个或多个包含数据结构合并到所述响应中。
13.一个或多个存储指令的计算机可读介质,所述指令在由一个或多个硬件处理器执行时使所述一个或多个硬件处理器执行用于处理从客户端接收的客户端查询的操作,所述客户端查询与搜索关键字和搜索范围相关联,其中所述客户端被授权访问多个数据源,所述多个数据源包括结构化的第一数据源和非结构化的第二数据源,并且所述操作包括:
使用所述第一数据源的一个或多个字典,
查找与所述搜索关键字相关的第一列;
为所述搜索范围规划对所述第一列执行的第一数据库查询,所述第一数据库查询的执行导致第一结果;以及
跟踪所述第一数据源中的第一结果的第一层次结构路径;
使用所述第二数据源的元数据,
查找与所述搜索关键字相关的第二列;
为所述搜索范围规划对所述第二列执行的第二数据库查询,所述第二数据库查询的执行导致第二结果;以及
跟踪所述第二数据源中的第二结果的第二层次结构路径;以及核对所述第一结果和所述第二结果以便利用所述第一层次结构路径和所述第二层次结构路径发送到所述客户端。
14.根据权利要求13所述的一个或多个计算机可读介质,其中直接执行查找所述第一列,绕过对包含所述第一列的任何数据结构与所述搜索关键字的相关性的评估。
15.根据权利要求13所述的一个或多个计算机可读介质,其中直接执行查找所述第二列,绕过对包含所述第二列的任何数据结构与所述搜索关键字的相关性的评估。
16.一种系统,其包括:
一个或多个硬件处理器,所述一个或多个硬件处理器具有与其耦合的存储器;以及
存储指令的计算机可读介质,所述指令在由所述一个或多个硬件处理器执行时使所述一个或多个硬件处理器执行包括以下各项的操作:
基于从客户端查询中提取的一个或多个搜索属性,直接标识与所述客户端查询相关的一个或多个列;
对标识的一个或多个列执行相应的数据库查询以获得所述客户端查询的结果;
确定所述结果的相应层次结构路径;
基于所述结果和所述相应层次结构路径制定对所述客户端查询的响应;以及
发送所述响应。
17.一种主机计算环境,其包括:
根据权利要求16所述的系统;以及
一个或多个软件应用程序,所述一个或多个软件应用程序被配置为:
向所述系统提供多个客户端查询,包括所述客户端查询;以及
从所述系统接收对应的多个响应,包括所述响应;
其中所述指令不能从所述主机计算环境外部访问。
18.根据权利要求17所述的系统,其中所述标识的一个或多个列中的给定列在所述主机计算环境外部。
19.根据权利要求16所述的系统,其充当独立服务运行。
20.根据权利要求16所述的系统,其中所述一个或多个列是从包括至少一个结构化数据库和至少一个非结构化数据源的搜索域中标识的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/073,314 US20240184793A1 (en) | 2022-12-01 | 2022-12-01 | Deep mining of enterprise data sources |
US18/073,314 | 2022-12-01 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118132618A true CN118132618A (zh) | 2024-06-04 |
Family
ID=88833775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311543558.XA Pending CN118132618A (zh) | 2022-12-01 | 2023-11-20 | 企业数据源深度挖掘 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240184793A1 (zh) |
EP (1) | EP4404078A1 (zh) |
CN (1) | CN118132618A (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280535B2 (en) * | 2011-03-31 | 2016-03-08 | Infosys Limited | Natural language querying with cascaded conditional random fields |
US9652451B2 (en) * | 2014-05-08 | 2017-05-16 | Marvin Elder | Natural language query |
US20160171050A1 (en) * | 2014-11-20 | 2016-06-16 | Subrata Das | Distributed Analytical Search Utilizing Semantic Analysis of Natural Language |
-
2022
- 2022-12-01 US US18/073,314 patent/US20240184793A1/en active Pending
-
2023
- 2023-11-13 EP EP23209366.6A patent/EP4404078A1/en active Pending
- 2023-11-20 CN CN202311543558.XA patent/CN118132618A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4404078A1 (en) | 2024-07-24 |
US20240184793A1 (en) | 2024-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10599719B2 (en) | System and method for providing prediction-model-based generation of a graph data model | |
CN112437917B (zh) | 使用自主代理和词库的数据库的自然语言接口 | |
US11727000B2 (en) | System and method for reducing resource usage in a data retrieval process | |
US10223417B1 (en) | System and method for reducing query-related resource usage in a data retrieval process | |
Ma et al. | Big graph search: challenges and techniques | |
Hernández et al. | Deep Web crawling: a survey | |
Dragut et al. | Deep web query interface understanding and integration | |
US10019537B1 (en) | System and method for data search in a graph database | |
Konstantinou et al. | VADA: an architecture for end user informed data preparation | |
US20210312317A1 (en) | Facilitating machine learning configuration | |
US11726999B1 (en) | Obtaining inferences to perform access requests at a non-relational database system | |
López et al. | An efficient and scalable search engine for models | |
KR101877828B1 (ko) | 인공지능 기반의 사용자 인터페이스 통합 플랫폼 시스템 | |
JP2024041902A (ja) | マルチソース型の相互運用性および/または情報検索の最適化 | |
CN115905212A (zh) | 具有相关性标识符的集中式元数据储存库 | |
EP3095052A1 (en) | System and method for data search in a graph database | |
US20240184793A1 (en) | Deep mining of enterprise data sources | |
Khurana et al. | Survey of techniques for deep web source selection and surfacing the hidden web content | |
Hoseini et al. | A survey on semantic data management as intersection of ontology-based data access, semantic modeling and data lakes | |
CN116756375B (zh) | 一种基于图谱的异构数据的处理系统 | |
US20240119045A1 (en) | Systems and Methods for Intelligent Database Report Generation | |
US20240202225A1 (en) | Enterprise generative artificial intelligence architecture | |
Macke | Leveraging distributional context for safe and interactive data science at scale | |
Spahiu | Profiling Linked Data | |
Majka | An Evaluation of Knowledge Discovery Techniques for Big Transportation Data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |