跳转到主要内容
当你在 Properties 窗格中创建搜索元素并配置其属性时,程序会自动为这些属性生成相应的代码。本节将帮助你理解这些自动生成的代码,以便在需要时对其进行修改。

搜索元素结构

搜索元素结构示例 自动生成的 Parties.Address 搜索元素的代码如下所示:

自动生成的规则

~Root.Parties.Address,
t1 : Root.Parties.Organization,
t2 : Root.kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Root.Parties.Address ]+
=>
Root.Parties.Address( t );
如你所见,自动生成的代码始终使用每个搜索元素的完整路径来引用它们,以确保不存在名称冲突。在这种情况下,我们可以精简元素名称,从每个名称中去掉 Root。

使用更短元素名称的规则

~Parties.Address,
t1 : Parties.Organization,
t2 : kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );
现在我们可以逐条解释每个语句的含义:

规则说明

// Check that the Address search element hasn't been found yet, because we need only the first instance
~Parties.Address,
// Get the Organization search element and the next party keyword search element. They were found before Address
t1 : Parties.Organization,
t2 : kw_PreNextParty
// 查找包含一个 NERAddress 命名实体的标记序列
// ("same" 关键字指定如果有多个 NERAddress,则只应匹配一个)
// 地址应位于组织名称之后和下一个参与方的关键字之前
// + 号表示标记序列可能由多个单词组成
// 末尾的 ~@Parties.Address 条件确保
// 地址不会在相同的标记上再次匹配
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );