CN103282900B - 基于语言环境的索引和搜索方法 - Google Patents

基于语言环境的索引和搜索方法 Download PDF

Info

Publication number
CN103282900B
CN103282900B CN201180052442.5A CN201180052442A CN103282900B CN 103282900 B CN103282900 B CN 103282900B CN 201180052442 A CN201180052442 A CN 201180052442A CN 103282900 B CN103282900 B CN 103282900B
Authority
CN
China
Prior art keywords
character
state machine
ordering rule
rule key
node
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.)
Active
Application number
CN201180052442.5A
Other languages
English (en)
Other versions
CN103282900A (zh
Inventor
J·M·赫恩科韦斯特
E·R·戈伯勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Computer Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Apple Computer Inc filed Critical Apple Computer Inc
Publication of CN103282900A publication Critical patent/CN103282900A/zh
Application granted granted Critical
Publication of CN103282900B publication Critical patent/CN103282900B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3338Query expansion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及基于语言环境的索引和搜索方法。响应于从客户端接收的具有搜索项的搜索查询,确定当前语言环境。基于当前语言环境建立状态机,其中所述状态机包括一个或多个节点,以表示具有相同搜索项含义的搜索项的变化。遍历状态机的每个节点以识别对应于状态机的每个节点的倒排索引的一个或多个记入列表。从所述一个或多个记入列表获得的一个或多个项目标识符被返回到客户端,其中所述项目标识符识别包含由状态机表示的搜索项的变化的一个或多个文件。

Description

基于语言环境的索引和搜索方法
技术领域
本发明实施例一般涉及数据的索引和搜索领域;更具体而言,涉及基于语言环境(language locale)的索引和搜索。
背景技术
例如通用计算机系统的现代数据处理系统允许这种系统的用户创建各种不同类型的数据文件。例如,数据处理系统的典型用户可用文字处理程序(例如Microsoft Word)创建文本文件,或者可用图像处理程序(例如Adobe的Photoshop)创建图像文件。其他类型的众多文件能够由一个或多个用户创建或修改、编辑并以其他方式使用,用于典型的数据处理系统。可被创建或修改的不同类型的大量文件可对试图找到已被创建的特定文件的典型用户提出挑战。
现代数据处理系统通常包括文件管理系统,该文件管理系统允许用户将文件放置在各种目录或子目录(如文件夹)中,并允许用户给文件命名。此外,这些文件管理系统经常允许用户不仅通过搜索文件内容还通过搜索文件名、或创建日期、或修改日期或文件类型而找到文件。这种文件管理系统的例子是在加州库比蒂诺的苹果计算机公司的Macintosh计算机上运行的Finder程序。文件管理系统程序的另一个例子是在华盛顿雷德蒙的微软公司的Windows操作系统上运行的Windows Explorer程序。Finder程序和Windows Explorer程序都包括发现命令,该发现命令允许用户通过各种标准(包括文件名、或创建日期、或修改日期或文件类型)搜索文件。这种搜索能力通过信息来搜索,该信息对于每个文件都是相同的而不管文件类型。因此,例如,Microsoft Word文件的可搜索数据与Adobe Photoshop文件的可搜索数据相同,此数据通常包括文件名、文件类型、创建日期、最后修改日期、文件大小以及可由文件管理系统为文件维护的某些其他参数。
目前现有的某些应用程序允许用户维护关于特定文件的数据。关于特定文件的数据可被视为元数据,因为它是关于其他数据的数据。特定文件的此元数据可包括关于文件作者的信息、文档摘要以及其他类型的各种信息。某些文件管理系统(例如Finder程序)允许用户通过搜索元数据找到文件。
在典型的系统中,各种内容、文件和元数据被索引,用于之后在通常被称为倒排索引(inverted index)中使用程序(例如Finder程序)进行检索。例如,倒排索引可包含其中出现特定词的文档参考列表。
某些环境不同地响应于特殊字符。例如在美国,‘a’字符应该生成‘a’、以及‘à’和一些其他字符,因为它们基于其基本字符而具有相似含义或相同含义。与此相反,在瑞典语环境中,这些字符可能具有不同含义。传统的索引和搜索并没有考虑到该特定语言环境。
发明内容
根据本发明的一个方面,响应于从客户端接收的具有搜索项(search term)的搜索查询,确定当前语言环境。基于当前语言环境建立状态机,其中所述状态机包括一个或多个节点,以表示具有相同搜索项含义的搜索项的变化。遍历(traverse)状态机的每个节点以识别对应于状态机的每个节点的倒排索引的一个或多个记入列表(posting list)。从所述一个或多个记入列表获得的一个或多个项目标识符被返回到客户端,其中所述项目标识符可识别包含由状态机表示的搜索项的变化的一个或多个文件的一个或多个条目或位置。
根据本发明的另一个方面,响应于具有搜索项的搜索查询,确定搜索项的每个部分的排序规则键(collation key)。基于所述搜索项,建立具有一个或多个节点的状态机,每个节点表示搜索项中的字符之一。遍历状态机中的每个节点以识别对应于状态机的每个节点的倒排索引的一个或多个记入列表。对于状态机的每个节点,基于当前语言环境识别具有相同含义的一个或多个等效字符。将等效字符的排序规则键和搜索项中一个或多个对应字符的一个或多个键相比较。移除具有和搜索项中对应字符的排序规则键不匹配的排序规则键的等效字符,其中剩余字符用于识别倒排索引中的一个或多个记入列表。
根据本发明的再一个方面,在数据处理系统处接收第一项,其中所述第一项包括要被索引的一个或多个字符。确定数据处理系统的当前语言环境。确定在当前语言环境下第一项的每个字符的排序规则键。在倒排索引中索引所述第一项的每个字符的排序规则键而不基于第一项的实际字符进行索引。所述排序规则键表示当前语言环境下具有相同含义的一个或多个等效字符的族,其中基于排序规则键,为随后的搜索使用所述倒排索引。
从附图和随后的详细描述将显而易见本发明的其它特征。
附图说明
在类似附图标记指示相似元件的附图的图解中通过实例而非限制的方式例示了本发明的实施例。
图1是例示根据发明一个实施例的索引和搜索系统的框图。
图2-4是例示根据发明某些实施例的某些状态机的状态图。
图5是例示根据发明一个实施例、基于语言环境的索引和搜索方法的流程图。
图6和图7是例示根据发明某些实施例、基于排序规则键的状态机的图表。
图8和图9是例示根据发明某些实施例的某些数据结构的图表。
图10是例示根据发明另一实施例的搜索方法的流程图。
图11是例示根据发明一个实施例、基于排序规则键的索引和搜索方法的流程图。
图12是数据处理系统的框图,其可和发明的一个实施例一起使用。
具体实施方式
将参考下面论述的细节描述本发明的各种实施例和方面,以及附图将例示各种实施例。下面的描述和附图是例示本发明而不应解释为限制本发明。描述许多具体细节以提供对本发明各种实施例的透彻理解。然而在某些情况下,为了提供本发明实施例的简要论述,没有描述众所周知的或常规的细节。
说明书中提及“一个实施例”或“实施例”是指:结合该实施例所述的特定特征、结构或特性可包括在本发明的至少一个实施例中。在说明书中各个地方出现的短语“在一个实施例中”并不一定都指相同的实施例。
根据某些实施例,可基于所使用的语言环境种类不同地建立索引(例如倒排索引)。在一个实施例中,在索引阶段期间建立索引以覆盖大部分或所有语言环境的大部分或所有字符(包括特殊字符)。随后,当接收到搜索查询,搜索包含搜索查询的搜索项(term)的任何文件时,基于该时间点的语言环境而动态建立状态机,其中该状态机表示语言环境下具有相同或类似含义的搜索项的所有变化。实际上,这筛选出(screen out)在该时间点的语言环境下具有不同含义的任意字符,然而在其他语言环境中可能具有相同含义。
根据替换实施例,对于某些操作环境,例如移动设备,因为本地化趋于保持静止(例如语言环境在相对长的一段时间内保持相同),可以特定语言方式建立索引。例如,如果多个字符或查询项是等效的,不是索引实际的字符或项,而是索引对应于字符或项的排序规则键。结果,可在相对小的规模内维护该索引,这进而又导致搜索更快。
图1是例示根据本发明一个实施例的索引和搜索系统的方框图。参照图1,系统100包括但不限于:索引软件101、搜索软件102以及可操作地耦合到索引软件101和搜索软件102的一个或多个系统组件(例如操作系统(OS)内核),以及其他软件程序。搜索软件102包括各种各样的搜索程序,例如通过内容搜索(也称为通过内容发现)软件107,通过元数据搜索(也称为通过元数据发现)软件108。例如,通过内容搜索软件107和/或通过元数据搜索软件108可被实现为任意种类操作系统的浏览程序的一部分,例如从加州库比蒂诺的苹果公司获得的Mac OSTM的FinderTM程序。
在一个实施例中,通过内容发现软件107和/或通过元数据发现软件108用于发现内容文件103或元数据104中存在的项。例如,软件107/108可用于从诸如Microsoft Word等文字处理程序创建的文字处理或文本处理文件中发现文本和其他信息。
通过内容发现软件107和通过元数据发现软件108可操作地连接到包括一个或多个索引105的数据库。该索引105表示存储设备中数据文件的至少一个子集,包括文件数据103和元数据104,并且可包括诸如计算机系统主硬盘的特定存储设备(或若干存储设备)中的所有数据文件。一个或多个索引105包括文件103/104上存储的每个项目的内容和/或元数据的索引表示,例如文本文档、音乐、视频或其他类型的文件。通过内容发现软件107搜索项,在该内容中通过搜索一个或多个索引文件105来确定诸如特定词的特定项是否出现在已被索引的数据文件103上所存储的项目上。通过内容发现软件功能可经由通过元数据发现软件108获得,通过元数据发现软件108向用户提供如下优点:用户可搜索索引105,查找数据文件103上所存储项目内的内容103以及已为该项目生成的任何元数据108。
在本发明的一个实施例中,索引软件101用于创建和维护一个或多个索引105,其可操作地耦合到通过内容和元数据发现软件应用107/108。在其他功能中,索引软件101接收通过扫描内容文件103和元数据104获得的信息,并使用该信息生成一个或多个记入列表(posting list)106,该记入列表识别包含特定项或者具有包含特定项的元数据的项目(例如文件)。这样,记入列表是一种将项(例如搜索项)映射到列表中识别的项目的倒排索引。
在一个实施例中,扫描期间获得的信息包括唯一标识符,其唯一地识别包含特定项或具有包含该项的元数据的项目。例如,诸如文字处理或文本处理文件的项目具有唯一标识符,被称为ITEMID。当生成记入列表(例如记入文件106)时使用ITEMID来识别那些包含特定项的项目,例如词语“苹果(Apple)”。识别其他类型文件(例如图像文件或音乐文件)的ITEMID也可以发布到一个或多个记入列表106上,在这种情况下,ITEMID通常识别具有包含特定项的元数据的项目。在一个实施例中,索引软件101将用于一个或多个项的记入列表106聚集成一个或多个更新集(未示出),并且不时地将更新集刷新成一个或多个索引文件105。
在一个实施例中,搜索软件102还包括搜索状态机生成器(builder)109,其被配置成在搜索时间处基于语言环境信息110构建状态机,所述状态机可被配置为操作系统或系统/用户配置的一部分。在一个实施例中,当接收到搜索查询以搜索包含搜索项的任何内容文件或元数据时,状态机生成器109被配置为动态构建状态机以基于从环境信息110获得的当前语言环境来表示搜索项。状态机可包括一个或多个节点,每个节点表示当前语言环境下搜索项的字符或等效字符。也就是说,状态机表示语言环境下具有相同或相似含义的搜索项的所有变化。实际上,这筛选出在该时间点的语言环境下具有不同含义的任意字符,然而在其他语言环境中可能具有相同含义。
例如在英语中,项“var”、和“vàr”是等效的,他们具有相同的含义。当搜索项包括项“var”、和“vàr”之一并且语言环境是英语时,包含任意一个精确项和等效项(例如“var”、和“vàr”)的所有文件都应被搜索和识别。然而在瑞典语中,词“var”意思是“was”而词意思是“spring”。搜索“var”结果不应该出现包含项的文件,反之亦然,因为这两项在瑞典语中具有不同的含义。
在一个实施例中,基于当前语言环境动态建立状态机来表示当前语言环境下的有效等效项。例如,如图2所示,在英语环境中,当搜索项包括“var”和之一时,包含“var”、和“vàr”中一个或多个、或者作为内容数据或者作为元数据的所有文件都应被搜索和识别。在这个例子中,假设搜索是不分大小写的搜索。响应于搜索项(例如,或者或者“vàr”)建立状态机,这导致英语环境下具有相同或相似含义的三个项。图2所示的状态机之后可用于搜索任何记入列表,其对应于状态机所表示的项,在本实例中为项“var”、和“vàr”。
另一方面,在丹麦语环境中,搜索项“var”和可能产生不同的结果,因为项“var”和在丹麦语中具有不同含义。在丹麦语中项可能产生图3所示的状态机,而项“var”可能产生图4所示的状态机,其中丹麦语的项“var”和“vàr”是等效的。因此在这个例子中,搜索诸如“var”的项可能产生显著不同的结果,这取决于该时间点处的语言环境。通过使用在该搜索时间点处动态创建的状态机,搜索结果可以更具体地适应当前语言环境。
图5是例示根据本发明一个实施例、基于语言环境的索引和搜索方法的流程图。例如,方法500可由图1的系统100执行。参照图5,在块501处,为全部或大部分语言环境的项和字符维护倒排索引。响应于从客户端接收的具有搜索项的搜索查询,确定该时间点处的当前语言环境。在块503处,基于当前语言环境,动态建立状态机来表示搜索项中每个字符(例如等效字符)的所有变化。也就是说,状态机表示当前语言环境下搜索项的所有各种等效字符的全部组合或元音变化(mutation)。在块504处,基于状态机的节点表示的项,搜索索引的记入列表以识别包含状态机所表示的一个或多个项的项目(例如文件)列表,生成搜索结果。在块505处,将搜索结果返回到客户端。
返回到图1,根据一些实施例,索引文件105和/或记入列表文件106可以树结构存储,例如特里(trie)数据结构或扁平结构。特里结构是树形结构,其中树的每个节点解析被匹配的字符串的一个字符。每个内部节点组成一个字符列表。与每个字符相关联的是或者链接到另一个内部节点或者链接到叶节点的输出链路。每个叶节点持有与引导到该叶节点的前缀相关的结果数据。为了搜索特里结构,在根节点处开始,并在对应于将被匹配的字符串中下一字符的每个节点处通过跟随输出链路而遍历树。当发现不了匹配的输出链路时,便已发现匹配。
每个字符可由统一代码(Unicode)和/或对应的排序规则键(collation key)表示。例如,这种统一代码和排序规则键可由国际化组件统一代码(InternationalComponents for Unicode,ICU)管理机构定义。可以由单个统一代码表示的组成形式或者可由多个统一代码表示的分解形式存储字符。在一个实施例中,字符被存储为可变长度的字符,用于统一状码编码,例如8位统一代码转换格式(UTF-8)字符。
图6和图7是例示根据本发明的一些实施例、基于排序规则键的状态机图表。在该示例中,图6所示的状态机可用于分别用0x57、0x2D、0x4F排序规则键搜索英语环境中的项“var”和以及丹麦语环境中的“var”。注意:基于给定语言环境中项的每一部分确定排序规则键。例如在英语中,项“vaar”具有(0x57 0x23 0x23 0x4F)的排序规则键,其中“v”部分由“0x57”键表示;“aa”部分由“0x23 0x23”键表示;而“r”部分由“0x4F”键表示。然而在丹麦语中,项“vaar”具有(0x57 0x60 0xC3 0x06 0x4F)的排序规则键,其中“v”部分由“0x57”键表示;“aa”部分由“0x60 0xC3 0x06”键表示;而“r”部分由键“0x4F”表示。图7所示的状态机可用于搜索丹麦语环境中的项如上所述,可基于当前语言环境、响应于搜索项而动态建立图6和图7所示的状态机。
在这个例子中,假设在英语环境中接收“var”的搜索并动态创建图6所示的状态机,其中字符以图8所示的特里架构存储或者以图9所示的扁平形式存储。处理逻辑(例如搜索软件)开始于图6的状态A1,其中存储在可变match_info中的匹配信息为空。参照图6,在状态A1处,处理逻辑寻找匹配字符串并发现“v”,而match_info={“v”next=T2}。处理逻辑然后转换到状态A2。在状态A2处,处理逻辑寻找随后的任意组合字符却什么都找不到,其中match_info={“v”next=T2}。然后转换到状态A3。在状态A3处,处理逻辑寻找匹配字符串并找到“a”,而match_info={“va”netx=T3}。然后转换到状态A4。
在状态A4处,处理逻辑寻找随后的任意组合字符并发现和“à”。因此处理逻辑然后验征相关的排序规则键 在这个例子中,所有的排序规则键与0x57、0x2D、0x4F排序规则键相匹配。在这一点上, 并且处理逻辑转换到状态A5。在状态A5处,处理逻辑寻找匹配字符串并发现“r”。然后转换到状态A6。在状态A6处,处理逻辑寻找随后的任意组合字符却什么都找不到。在这一点上,处理逻辑之后转换到状态A7并且具有用于“var”、和“vàr”的最终匹配。之后识别并从图8-9所示数据结构的任意一个中检索这些项的记入列表。
在丹麦语中搜索的另一个例子中,参见图7,处理逻辑开始于状态B1,同时match_info={empty}。在状态B1处,处理逻辑查找匹配字符串并找到“v”,其中match_info={“v”next=T2}。在状态B2处,处理逻辑查找随后的任意组合字符但什么都找不到,其中match_info={“v”next=T2}。在状态B3处,处理逻辑查找匹配字符串并找到其中在状态B4处,处理逻辑查找随后的任意组合字符但什么都找不到,其中在状态B5处,处理逻辑查找匹配字符串并发现“r”,其中在状态B6处,处理逻辑查找随后的任意组合字符但什么都找不到,其中在状态B7处,我们有了的最终匹配。
在丹麦语中搜索“var”时,处理逻辑开始于状态A1,同时match_info为{empty}。在状态A1处,处理逻辑查找匹配字符串并找到“v”,其中match_info={“v”next=T2}。在状态A2处,处理逻辑查找随后的任意组合字符却什么都没找到,其中match_info={“v”next=T2}。在状态A3处,处理逻辑查找匹配字符串并发现“a”,其中match_info={“va”next=T3}。在状态A4处,处理逻辑查找随后的任意组合字符并发现一些,其中 此外,处理逻辑验证排序规则键 在这个例子中,只有“va”和“và”(例如0x60、0xC3和0x06)的排序规则键与搜索项的排序规则键匹配(例如0x57和0x2D),其中的排序规则键并不匹配。因此,match_info={“va”next=T3,“và”next=T5},其中移除了在状态A5处,处理逻辑查找匹配字符串并发现“r”,其中match_info={“var”next=0,“và”next=0}。在状态A6处,处理逻辑查找随后的任意组合字符却什么都找不到,其中match_info={“var”next=0,next=0,“và”next=0}。在状态A7处,我们有了“var”和“vàr”的最终匹配。
图10是例示根据本发明另一个实施例的搜索方法的流程图。例如,方法1000可由图1的系统100执行。参照图10,在块1001处,响应于搜索项,确定搜索项的每个字符的排序规则键。可根据ICU管理机构提出的一条或多条规则确定这种排序规则键。在块1002处,动态建立状态机,其中状态机包括一个或多个节点,每个节点对应于搜索项中的字符之一。在块1003处,对于状态机中的每个节点,基于当前语言环境识别一个或多个等效字符。在块1004处,将等效字符的排序规则键和与搜索项相关联的排序规则键匹配。在块1005处,移除其排序规则键不与对应的一个搜索项相匹配的任意字符。
对于某些操作环境,例如移动设备,语言环境趋于稳定。也就是说,操作环境的语言环境不会经常变化。当然,诸如存储器和/或存储设备的处理带宽倾向于被限制在这种操作环境中。根据本发明的一些实施例,不是索引项的实际字符,而是索引当前语言环境下项的字符的排序规则键。例如,移动电话通常具有少量的正被索引的文档集。在一个实施例中,基于当前的语言环境索引排序规则键。如果语言环境变化,则重新索引新语言环境下文档的排序规则键。
对于英语,对于不区分大小写/发音符号的搜索来说,项“var”、和“vàr”都具有相同的排序规则键(0x57 0x2D 0x4F)。在这种情况下,可以只索引排序规则键而不是初始项。当搜索时,基于搜索项动态建立排序规则键。这具有存储更少唯一项的优点,但在这个过程中可能稀疏(loose)初始项(即不能从排序规则键中再生初始项,因为单个排序规则键可表示多个字符)。不过,该索引可被保持在相对小的尺寸。
图11是例示了根据本发明一个实施例、基于排序规则键的索引和搜索方法的流程图。例如,方法1100可由图1的系统100执行。参照图11,在块1101处,响应于具有一个或多个将被索引的字符的项,确定当前语言环境。可从系统操作环境的用户和/或系统配置获得语言环境。在块1102处,基于当前语言环境,为项中每个或所有字符生成排序规则键。在块1103处,在倒排索引中索引表示项的排序规则键。随后在块1104处,响应于搜索项,基于当前语言环境,为搜索项中每个字符生成排序规则键。在块1105处,基于表示搜索项的排序规则键搜索倒排索引,用以识别包含对应于排序规则键的项的一个或多个文件。注意:块1101-1103中以及块1104-1105中包括的操作可独立执行,例如通过不同的线程。
图12是数据处理系统的框图,其可随本发明的一个实施例一起使用。例如系统1200可用作图1的系统100。注意:虽然图12例示了计算机系统的各种组件,但并不意在表示互连该组件的任意特定架构或方式;因为这种细节与本发明并非关系密切。还应当理解:网络计算机、手持计算机、蜂窝电话和具有更少组件或者可能具有更多组件的其他数据处理系统也可随本发明一起使用。图12的计算机系统例如可以是Apple Macintosh计算机或MacBook,或者IBM兼容PC。
如图12所示,数据处理系统形式的计算机系统1200包括总线或互连1202,其耦合到一个或多个微处理器1203以及ROM 1207、易失性RAM 1205和非易失性存储器1206。微处理器1203耦合到高速缓冲存储器1204。总线1202与这些不同组件互连在一起,还将这些组件1203、1207、1205和1206互连到显示控制器和显示设备1208以及输入/输出(I/O)设备1210,输入/输出设备可以是鼠标、键盘、调制解调器、网络接口、打印机和本领域公知的其它设备。
通常,输入/输出设备1210通过输入/输出控制器1209耦合到系统。易失性RAM1205通常被实现为动态RAM(DRAM),为了刷新或维护存储器中的数据,该动态RAM连续需要功率。非易失性存储器1206通常是磁性硬盘驱动器、磁光驱动器、光盘驱动器、或者DVD RAM或即使从系统移除电源后仍维护数据的其他类型的存储器系统。通常,虽然并不需要,但非易失性存储器也可以是随机存取存储器。
虽然图12显示非易失性存储器是直接耦合到数据处理系统中其余组件的本地设备,但本发明可以利用远离系统的非易失性存储器;例如通过网络接口(例如调制解调器或以太网接口)耦合到数据处理系统的网络存储设备。总线1202可包括通过各种桥、控制器和/或适配器相互连接的一条或多条总线,这在本技术领域是众所周知的。在一个实施例中,I/O控制器1209包括控制USB(Universal Serial Bus,通用串行总线)外围设备的USB适配器。可替换地,I/O控制器1209可包括IEEE-1394适配器,也被称为火线适配器,用于控制FireWire设备。
已经以计算机存储器内数据位操作的算法和符号表示形式呈现了前面详细描述的某些部分。这些算法描述和表示是数据处理领域技术人员所使用的方式,用以最有效地向本领域其他技术人员传达其工作的实质。此处算法通常被设想成导致所希望结果的操作的自相一致序列。该操作是需要物理操纵物理量的那些操作。
然而应当牢记的是:所有这些项和类似项与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。除非特别声明,否则如上面论述中显而易见的那样,应当理解的是:整个说明书中,使用例如在下面权利要求中提出的那些项的论述指的是计算机系统或类似电子计算设备的动作和过程,所述计算机系统或类似电子计算设备将被表示为计算机系统寄存器和存储器中物理(电子)量的数据操作和转换成类似地被表示为计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内物理量的其他数据。
本发明的实施例还涉及执行此处操作的装置。这样的计算机程序存储在非临时性计算机可读介质上。机器可读介质包括以机器(例如计算机)可读形式存储信息的任何机制。例如,机器可读(例如计算机可读)介质包括机器(例如计算机)可读存储介质(例如,只读存储器(“ROM”),随机存取存储器(“RAM”),磁盘存储介质,光存储介质,闪速存储设备)。
前面附图中所述的过程或方法可由处理逻辑电路执行,其包括硬件(例如电路、专用逻辑电路等)、软件(例如非临时性计算机可读介质上体现的软件)或二者的组合。虽然上面依据某些顺序操作来描述过程或方法,但应该理解的是:可以不同的顺序执行所述的某些操作。此外,可并行而非顺序地执行某些操作。
没有参照任何特定的编程语言描述本发明的实施例。应理解的是:各种编程语言可用于实现此处所述的本发明实施例的教导。
在上述说明书中,已经参照其特定的示例性实施例描述了本发明的实施例。显而易见的是:可以对其进行备种修改而不脱离下列权利要求中所提出的本发明更广泛精神和范围。因此以说明性的意义而不是限制性的意义来看待本说明书和附图。

Claims (26)

1.一种计算机实现的方法,包括:
响应于从客户端接收的具有包含多个字符的搜索项的搜索查询,确定当前语言环境;
基于当前语言环境,动态建立具有多个节点的状态机,以表示具有相同搜索项含义的搜索项的变化,每个节点表示搜索项中的字符之一,其中状态机包括在当前语言环境下对应于具有相同含义的不同字符的至少两个节点;
遍历状态机的每个节点以识别对应于状态机的所述多个节点的倒排索引的一个或多个记入列表;以及
向客户端返回从所述一个或多个记入列表获得的一个或多个项目标识符,所述项目标识符识别包含由状态机表示的搜索项的变化的一个或多个文件。
2.如权利要求1所述的方法,还包括:为具有来自多个语言环境的一个或多个字符的多个项维护所述倒排索引,每个项对应于具有识别含有对应项的一个或多个文件的项目标识符的记入列表。
3.如权利要求1所述的方法,其中,状态机中的每个节点表示在所确定的语言环境下与搜索项中的对应字符具有相同含义的字符。
4.如权利要求1所述的方法,其中,状态机的每个节点与排序规则键相关联,所述排序规则键表示不同语言环境中具有相同含义的不同字符变化的排序规则。
5.如权利要求4所述的方法,其中,所述排序规则键源自表示在不同语言环境中的每个字符的国际化组件统一代码(ICU)。
6.如权利要求4所述的方法,其中,遍历状态机包括:
将状态机的每个节点的第一排序规则键与搜索项的对应字符的第二排序规则键相匹配;以及
从状态机中移除具有和第二排序规则键不匹配的排序规则键的候选字符。
7.如权利要求1所述的方法,其中,以特里架构存储倒排索引的项,以及其中为了识别对应的记入列表,遍历状态机的每个节点以定位特里架构中的对应节点。
8.一种数据处理系统,包括:
响应于从客户端接收的具有包含多个字符的搜索项的搜索查询,确定当前语言环境的装置;
基于当前语言环境,动态建立具有多个节点的状态机,以表示具有相同搜索项含义的搜索项的变化的装置,每个节点表示搜索项中的字符之一,其中状态机包括在当前语言环境下对应于具有相同含义的不同字符的至少两个节点;
遍历状态机的每个节点以识别对应于状态机的所述多个节点的倒排索引的一个或多个记入列表的装置;以及
向客户端返回从所述一个或多个记入列表获得的一个或多个项目标识符的装置,所述项目标识符识别包含由状态机表示的搜索项的变化的一个或多个文件。
9.如权利要求8所述的数据处理系统,其中,所述系统还包括:为具有来自多个语言环境的一个或多个字符的多个项维护所述倒排索引的装置,每个项对应于具有识别含有对应项的一个或多个文件的项目标识符的记入列表。
10.如权利要求8所述的数据处理系统,其中,状态机中的每个节点表示在所确定的语言环境下与搜索项中的对应字符具有相同含义的字符。
11.如权利要求8所述的数据处理系统,其中,状态机的每个节点与排序规则键相关联,所述排序规则键表示不同语言环境中具有相同含义的不同字符变化的排序规则。
12.如权利要求11所述的数据处理系统,其中,所述排序规则键源自表示在不同语言环境中的每个字符的国际化组件统一代码(ICU)。
13.如权利要求11所述的数据处理系统,其中,遍历状态机的装置包括:
将状态机的每个节点的第一排序规则键与搜索项的对应字符的第二排序规则键相匹配的装置;以及
从状态机中移除具有和第二排序规则键不匹配的排序规则键的候选字符的装置。
14.如权利要求8所述的数据处理系统,其中,以特里架构存储倒排索引的项,以及其中遍历状态机的每个节点,以定位特里架构中的对应节点来识别对应的记入列表。
15.一种计算机实现的方法,包括:
响应于具有包含多个字符的搜索项的搜索查询,确定搜索项的每个字符的排序规则键;
基于所述搜索项,动态建立具有多个节点的状态机,每个节点表示搜索项中的字符之一,其中状态机包括在当前语言环境下对应于具有相同含义的不同字符的至少两个节点;以及
遍历状态机中的每个节点以识别对应于状态机的所述多个节点的倒排索引的一个或多个记入列表,包括:
对于状态机的每个节点,基于当前语言环境识别一个或多个等效字符,
将等效字符的排序规则键和搜索项中对应字符的排序规则键相比较,以及
移除具有和搜索项中对应字符的排序规则键不匹配的排序规则键的等效字符,其中剩余字符用于识别倒排索引中的一个或多个记入列表。
16.如权利要求15所述的方法,还包括向客户端呈现从所述一个或多个记入列表获得的一个或多个项目标识符,所述项目标识符识别包含由状态机表示的搜索项变化的一个或多个文件。
17.如权利要求15所述的方法,其中,所述排序规则键源自表示在不同语言环境中的字符的国际化组件统一代码(ICU)。
18.一种计算机实现的方法,包括:
在数据处理系统处接收第一项,所述第一项具有要被索引的多个字符;
确定数据处理系统的当前语言环境;
基于所述第一项,动态建立具有多个节点的状态机,每个节点表示所述第一项中的字符之一,其中状态机包括在当前语言环境下对应于具有相同含义的不同字符的至少两个节点;
确定在当前语言环境下第一项的每个字符的排序规则键;
在倒排索引中索引第一项的每个字符的排序规则键而不基于第一项的实际字符进行索引,所述排序规则键表示当前语言环境下具有相同含义的多个等效字符的族,其中基于排序规则键,为随后的搜索使用所述倒排索引。
19.如权利要求18所述的方法,还包括:
在数据系统处接收来自客户端的具有第二项的搜索查询,所述第二项具有一个或多个字符;
基于当前语言环境,生成表示每个字符的一个或多个排序规则键的序列;
基于排序规则键的序列,搜索倒排索引以识别与排序规则键相关联的一个或多个记入列表;以及
向客户端返回从记入列表获得的一个或多个项目标识符的列表,所述项目标识符识别包含对应于排序规则键的字符的一个或多个文件。
20.如权利要求18所述的方法,其中,排序规则键源自表示在不同语言环境中的字符的国际化组件统一代码(ICU)。
21.一种计算机实现的设备,包括:
响应于具有包含多个字符的搜索项的搜索查询,确定搜索项的每个字符的排序规则键的装置;
基于所述搜索项,动态建立具有多个节点的状态机的装置,每个节点表示搜索项中的字符之一,其中状态机包括在当前语言环境下对应于具有相同含义的不同字符的至少两个节点;以及
遍历状态机中的每个节点以识别对应于状态机的所述多个节点的倒排索引的一个或多个记入列表的装置,包括:
对于状态机的每个节点,基于当前语言环境识别一个或多个等效字符的装置,
将等效字符的排序规则键和搜索项中对应字符的排序规则键相比较的装置,以及
移除具有和搜索项中对应字符的排序规则键不匹配的排序规则键的等效字符的装置,其中剩余字符用于识别倒排索引中的一个或多个记入列表。
22.如权利要求21所述的设备,还包括向客户端呈现从所述一个或多个记入列表获得的一个或多个项目标识符的装置,所述项目标识符识别包含由状态机表示的搜索项变化的一个或多个文件。
23.如权利要求21所述的设备,其中,所述排序规则键源自表示在不同语言环境中的字符的国际化组件统一代码(ICU)。
24.一种计算机实现的设备,包括:
在数据处理系统处接收第一项的装置,所述第一项具有要被索引的多个字符;
确定数据处理系统的当前语言环境的装置;
基于所述第一项,动态建立具有多个节点的状态机的装置,每个节点表示所述第一项中的字符之一,其中状态机包括在当前语言环境下对应于具有相同含义的不同字符的至少两个节点;
确定在当前语言环境下第一项的每个字符的排序规则键的装置;
在倒排索引中索引第一项的每个字符的排序规则键而不基于第一项的实际字符进行索引的装置,所述排序规则键表示当前语言环境下具有相同含义的多个等效字符的族,其中基于排序规则键,为随后的搜索使用所述倒排索引。
25.如权利要求24所述的设备,还包括:
在数据系统处接收来自客户端的具有第二项的搜索查询的装置,所述第二项具有一个或多个字符;
基于当前语言环境,生成表示每个字符的一个或多个排序规则键的序列的装置;
基于排序规则键的序列,搜索倒排索引以识别与排序规则键相关联的一个或多个记入列表的装置;以及
向客户端返回从记入列表获得的一个或多个项目标识符的列表的装置,所述项目标识符识别包含对应于排序规则键的字符的一个或多个文件。
26.如权利要求24所述的设备,其中,排序规则键源自表示在不同语言环境中的字符的国际化组件统一代码(ICU)。
CN201180052442.5A 2010-10-27 2011-10-19 基于语言环境的索引和搜索方法 Active CN103282900B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/913,517 2010-10-27
US12/913,517 US8577891B2 (en) 2010-10-27 2010-10-27 Methods for indexing and searching based on language locale
PCT/US2011/056963 WO2012058077A2 (en) 2010-10-27 2011-10-19 Methods for indexing and searching based on language locale

Publications (2)

Publication Number Publication Date
CN103282900A CN103282900A (zh) 2013-09-04
CN103282900B true CN103282900B (zh) 2017-02-22

Family

ID=44872635

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180052442.5A Active CN103282900B (zh) 2010-10-27 2011-10-19 基于语言环境的索引和搜索方法

Country Status (9)

Country Link
US (2) US8577891B2 (zh)
EP (1) EP2619689A2 (zh)
JP (1) JP5744216B2 (zh)
KR (1) KR101510973B1 (zh)
CN (1) CN103282900B (zh)
AU (1) AU2011320744A1 (zh)
BR (1) BR112013010013B1 (zh)
MX (1) MX2013004765A (zh)
WO (1) WO2012058077A2 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527518B2 (en) * 2010-12-16 2013-09-03 Sap Ag Inverted indexes with multiple language support
US20150169740A1 (en) * 2011-11-21 2015-06-18 Google Inc. Similar image retrieval
US10311062B2 (en) * 2012-08-21 2019-06-04 Microsoft Technology Licensing, Llc Filtering structured data using inexact, culture-dependent terms
US20160378747A1 (en) * 2015-06-29 2016-12-29 Apple Inc. Virtual assistant for media playback
US11113289B2 (en) * 2016-10-28 2021-09-07 Apple Inc. Blending learning models for search support
KR102016601B1 (ko) * 2016-11-29 2019-08-30 주식회사 닷 제한된 영역을 활용한 데이터 변환 장치, 방법 및 컴퓨터 프로그램
WO2018101735A1 (ko) * 2016-11-29 2018-06-07 주식회사 닷 제한된 영역을 활용한 데이터 변환 장치, 방법 및 컴퓨터 프로그램
US10831801B2 (en) 2017-05-12 2020-11-10 International Business Machines Corporation Contextual-based high precision search for mail systems
US10621246B2 (en) * 2017-06-02 2020-04-14 Apple Inc. Systems and methods for building an on-device temporal web index for user curated/preferred web content
US20180349467A1 (en) 2017-06-02 2018-12-06 Apple Inc. Systems and methods for grouping search results into dynamic categories based on query and result set
CN109635801A (zh) * 2017-10-09 2019-04-16 株式会社理光 光学字符识别后处理的方法、装置及计算机可读存储介质
US11544272B2 (en) * 2020-04-09 2023-01-03 Thoughtspot, Inc. Phrase translation for a low-latency database analysis system
CN117527832A (zh) * 2024-01-03 2024-02-06 杭州趣链科技有限公司 一种区块链的交易排序方法、装置、电子设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047283A (en) * 1998-02-26 2000-04-04 Sap Aktiengesellschaft Fast string searching and indexing using a search tree having a plurality of linked nodes

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5913208A (en) * 1996-07-09 1999-06-15 International Business Machines Corporation Identifying duplicate documents from search results without comparing document content
US6026398A (en) 1997-10-16 2000-02-15 Imarket, Incorporated System and methods for searching and matching databases
JP2002092018A (ja) * 2000-09-18 2002-03-29 Nec Software Hokkaido Ltd 片仮名平仮名も含めた検索システム
NZ518744A (en) 2002-05-03 2004-08-27 Hyperbolex Ltd Electronic document indexing using word use nodes, node objects and link objects
JP4294386B2 (ja) * 2003-06-13 2009-07-08 株式会社リコー 異表記正規化処理装置、異表記正規化処理プログラムおよび記憶媒体
US7493305B2 (en) 2004-04-09 2009-02-17 Oracle International Corporation Efficient queribility and manageability of an XML index with path subsetting
US20050251519A1 (en) * 2004-05-07 2005-11-10 International Business Machines Corporation Efficient language-dependent sorting of embedded numerics
US7818282B2 (en) * 2004-07-02 2010-10-19 International Business Machines Corporation System and method for the support of multilingual applications
US7792833B2 (en) * 2005-03-03 2010-09-07 Microsoft Corporation Ranking search results using language types
US8195683B2 (en) 2006-02-28 2012-06-05 Ebay Inc. Expansion of database search queries
CN101443759B (zh) * 2006-05-12 2010-08-11 北京乐图在线科技有限公司 多语言信息检索的方法和系统
US9754022B2 (en) * 2007-10-30 2017-09-05 At&T Intellectual Property I, L.P. System and method for language sensitive contextual searching
JP2010198350A (ja) * 2009-02-25 2010-09-09 Nippon Telegr & Teleph Corp <Ntt> 検索装置及び検索方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047283A (en) * 1998-02-26 2000-04-04 Sap Aktiengesellschaft Fast string searching and indexing using a search tree having a plurality of linked nodes

Also Published As

Publication number Publication date
CN103282900A (zh) 2013-09-04
KR101510973B1 (ko) 2015-04-10
JP2013544393A (ja) 2013-12-12
MX2013004765A (es) 2013-06-05
US9020951B2 (en) 2015-04-28
US8577891B2 (en) 2013-11-05
EP2619689A2 (en) 2013-07-31
AU2011320744A1 (en) 2013-05-09
KR20130076876A (ko) 2013-07-08
US20120109970A1 (en) 2012-05-03
BR112013010013B1 (pt) 2021-06-29
WO2012058077A3 (en) 2012-07-05
BR112013010013A2 (pt) 2016-08-02
JP5744216B2 (ja) 2015-07-08
US20130073559A1 (en) 2013-03-21
WO2012058077A2 (en) 2012-05-03

Similar Documents

Publication Publication Date Title
CN103282900B (zh) 基于语言环境的索引和搜索方法
US11341419B2 (en) Method of and system for generating a prediction model and determining an accuracy of a prediction model
US7788262B1 (en) Method and system for creating context based summary
US8407165B2 (en) Method for parsing, searching and formatting of text input for visual mapping of knowledge information
CN107153647B (zh) 进行数据压缩的方法、装置、系统和计算机程序产品
CN107844493B (zh) 一种文件关联方法及系统
JP2007102786A (ja) 大規模フルテキスト・インデックスでタキソノミーにインデックスを付け、探索することをサポートする方法、装置およびシステム
CN111400323B (zh) 数据检索方法、系统、设备及存储介质
Minack et al. Leveraging personal metadata for desktop search: The beagle++ system
Zhang et al. SUMMA: subgraph matching in massive graphs
US8914377B2 (en) Methods for prefix indexing
Huan et al. Tea: a general-purpose temporal graph random walk engine
Ilic et al. Inverted index search in data mining
Nasution Extracting keyword for disambiguating name based on the overlap principle
Tudhope et al. Faceted thesauri
Yin et al. Content‐Based Image Retrial Based on Hadoop
Will Thesaurus consultancy
Coole et al. lexidb: A scalable corpus database management system
Sekhon A Guide to Understanding & Using Folksonomies
Hansen et al. ColumbuScout: towards building local search engines over large databases
Carpineto et al. Full discrimination of subtopics in search results with keyphrase-based clustering
Achichi Liage de données ouvertes et hétérogènes: application au domaine musical
Torres-Parejo et al. Text retrieval and visualization in databases using tag clouds
Mule et al. Improved Indexing Technique For Information Retrieval Based On Ontological Concepts
Parimala et al. Extended Change Identification System

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant