消息匹配的制作方法_2

文档序号:9816405阅读:来源:国知局
对,并且 在内容匹配器的字段/值对中的布尔值指定为假的情况下,如果消息不包括内容匹配器字 段/值对的字段,则内容匹配器的字段/值对匹配消息。
[0017] 内容匹配器的所有字段/值对必须匹配消息的至少一部分内容,以便内容匹配器 匹配该消息。例如,以上的"匹配器"内容消息匹配以下消息"消息Γ但不匹配消息"消息2", 因为"消息2"不包括具有值21的"年龄"字段。
[0018] 在一些实施例中,有兴趣接收匹配所接收的内容匹配器的消息的(多个)订阅者的 一个或多个标识符与所接收的内容匹配器一起被接收。在一些实施例中,有兴趣接收匹配 所接收的内容匹配器的消息的订阅者的标识符是内容匹配器的发送者。所接收的内容匹配 器可以是所接收的多个内容匹配器的其中之一。
[0019] 在204处,针对所接收的内容匹配器,生成字段列表。在一些实施例中,生成字段列 表包括确定并且提取在所接收的内容匹配器中指定的字段标识符。该列表中的字段可以以 可确定的顺序布置。例如,字段以与字段的字母顺序(例如,字母顺序或反向字母顺序)相关 联的顺序来布置。例如,对于以上示例"匹配器"内容匹配器,生成["年龄"、"姓名"]的字段 列表。在一些实施例中,确定所生成的列表跨先前接收/处理/注册的内容匹配器是否是唯 一的。两个内容匹配器可以产生相同的生成的字段列表,因为每个内容匹配器指定相同字 段但指定字段的不同的相关联的值。确定列表是否唯一可以包括将字段列表与所存储的唯 一字段列表进行比较。如果字段列表是唯一的,则将该列表存储在唯一字段列表的数据存 储结构中。数据存储结构的示例包括列表、表格、哈希表格、数据库或者用于存储数据的任 何其他数据存储结构。如果字段列表不是唯一的,则列表不存储在唯一字段列表的数据存 储结构中。在一些实施例中,字段列表中的每个字段可以与该字段的相关联的值的数据类 型相关联。例如,数据类型可以是串、字符、整数、浮点数或者布尔值。在一些实施例中,在确 定消息是否匹配任何内容匹配器时使用所生成的字段列表。
[0020] 在206处,所接收的内容匹配器被编译为编译格式。在一些实施例中,编译内容匹 配器包括将内容匹配器的内容重新排序并且格式化为标准化的单行格式(例如,单个串)。 在一些实施例中,编译内容匹配器包括(1)提取内容匹配器的内容(例如,提取开始和结束 括号之间的内容,而无需内容匹配器名称),(2)以确定的顺序(例如,以字母顺序的顺序)对 包括在所提取的内容中的字段/值对进行排序,(3 )对每个字段/值对进行反向排序,使得其 变为值/字段对(例如,"年龄" :"21"变为"21" : "年龄"),以及(4)去除空白处并且对所得到 的内容进行重新格式化(例如,去除空白处并且以逗号而不是新的线分开每个值/字段对)。 例如,对于以上示例"匹配器"内容匹配器,所编译的内容匹配器是:"21" : "年龄"、"Steve" : "姓名"。在一些实施例中,通过对每个字段/值对进行反向排序以使得其变为值/字段对,在 存储所编译的内容匹配器时,哈希表格冲突被最小化。
[0021] 在208处,所编译的内容匹配器被存储。所编译的内容匹配器存储在诸如列表、表 格、哈希表格、数据库或者用于存储数据的任何其他数据存储结构的数据存储结构中。存储 所编译的内容匹配器包括存储并且将所编译的内容匹配器注册为与有兴趣接收匹配该内 容匹配器的消息的(多个)订阅者的一个或多个标识符(例如,在202处连同所接收的内容匹 配器一起接收的(多个)订阅者标识符的列表)相关联。例如,所编译的内容匹配器被存储为 一个或多个相关联的订阅者标识符的相关联的值的密钥。在一些实施例中,在确定消息是 否匹配任何存储/注册的内容匹配器时,使用所存储/注册的编译的内容匹配器,并且如果 匹配被找到,则将消息提供给所匹配的内容匹配器的(多个)相关联的订阅者。
[0022] 图3是示出用于处理消息以确定该消息是否匹配内容匹配器的过程的实施例的流 程图。图3的过程可以在图1的访问点102中实施。
[0023]在302处,接收消息。在一些实施例中,接收消息包括接收来自诸如图1的消息提供 者104的消息提供者的消息。所接收的消息可以经由消息流来接收。消息的示例包括新闻、 股票报价、用户消息以及任何其他内容实体。在一些实施例中,消息是多个所接收消息的其 中之一。消息可以是诸如JS0N、XML、YAML的格式、或任何其他关键字/字段/标签组织格式。
[0024] 在304处,对于每个可应用的字段列表,生成与可应用的字段列表中的每一个相对 应的编译的消息。在一些实施例中,字段列表包括在图2的204处生成的一个或多个字段列 表。例如,可应用字段列表的候选者是存储在图2的204处的唯一字段列表的数据存储结构 中的唯一字段列表。
[0025] 在一些实施例中,生成编译的消息包括确定(多个)可应用的字段列表。在一些实 施例中,确定(多个)可应用的字段列表包括确定包括在所接收的消息中的字段。所确定的 字段可以以与(多个)字段列表相关联的排序相关联的顺序(例如字母顺序)进行排序。为了 确定(多个)可应用的字段列表,确定作为所接收的消息的字段的子集的唯一存储字段列表 的所有(多个)字段列表(例如,在图2的204处确定的)。例如,确定包括全部在所接收的消息 中指定的字段的(从内容匹配器编译的)唯一字段列表的所有(多个)字段列表。如果(多个) 可应用的字段列表为空,则过程结束并且确定消息不匹配任何内容匹配器并且该消息将不 递送至任何订阅者。
[0026] 对于(多个)可应用的字段列表中的每个可应用的字段列表,所接收的消息被编译 为可应用的字段列表的格式。在一些实施例中,所编译的消息可与编译的内容匹配器比较 以确定所编译的消息是否匹配任何内容匹配器。
[0027] 在一些实施例中,编译消息包括(1)提取与可应用的字段列表相对应的消息的内 容(例如,提取包括在匹配可应用的字段列表中的每个字段的消息中的字段/值对),(2)对 包括在所提取的内容中的字段/值对进行排序(例如,以字母顺序排序)(例如,如果消息中 的字段/值对以包括在可应用的字段列表中的字段的顺序来提取,则可以不执行排序),(3) 对每个字段/值对进行反向排序,以使得其变为值/字段对(例如,"年龄" :"21"变为"21" : "年龄"),以及(4)去除空白处并且对所得到的内容进行重新格式化(例如,去除空白处并且 以逗号而不是新的线分开每个值/字段对)。
[0028] 例如,两个内容匹配器已经被处理和注册。
[0029] 对于内容匹配器"内容匹配器Γ,所确定的字段列表是["年龄"、"姓名"]并且对于 内容匹配器"内容匹配器2",所确定的字段列表是["年龄"、"电话"]。当以下消息被接收时, 确定用于"内容匹配器Γ的字段列表可应用于该消息,因为该消息包括"年龄"字段以及"姓 名"字段二者,并且用于"内容匹配器2"的字段列表也可应用于该消息,因为该消息包括"姓 名"字段以及"电话"字段二者。
[0030] 对于"内容匹配器Γ字段列表["年龄"、"姓名"],以上消息被编译为21: "年龄"、 "steve" : "姓名",并且对于"内容匹配器2"字段列表["姓名"、"电话"],以上消息被编译为 "steve" : "姓名"、"555-1212" : "电话"。
[0031] 在306处,确定所接收的消息的所编译的消息的一个或多个中的每一个是否匹配 一个或多个注册的内容匹配器。在一些实施例中,注册的内容匹配器是使用图2的过程而接 收和处理的内容匹配器。在一些实施例中,确定所接收的消息的所编译的消息的一个或多 个中的每一个是否匹配一个或多个注册的内容匹配器包括确定所编译的消息的一个或多 个中的每一个是否与图2的208处存储在数据存储结构中的编译的内容匹配器相同。例如, 包含注册的内容匹配器的数据存储结构被搜索以确定每个编译的消息是否匹配数据存储 结构的任何条目。如果对于编译的消息找到匹配的编译的内容匹配器,编译的消息的原始 消息被发送至与匹配的编译的内容匹配器相关联的一个或多个消息订阅者(例如,包含注 册的内容匹配器的数据存储结构存储与每个编译的内容匹配器相关联的一个或多个消息 订阅者的列表)。
[0032] 以下段落描述处理内容匹配器和要分发给如由内容匹配器标识的消息订阅者的 消息的联
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1