文章
· 一月 23 阅读大约需 3 分钟

第七章 使用 SQL Search - 同义词表

第七章 使用 SQL Search - 同义词表

同义词表

要实现同义词表,请将该表定义为扩展 iFind.Synonym 抽象类的持久类。

此类定义了两个属性:FromTermToTerm。一对 FromTermToTerm 属性将 ToTerm 定义为 FromTerm 的同义词。如果查询包含 FromTermSQL 搜索将使用 ToTerm 来扩展查询。

该查询使用此类的 GetMatch() 方法根据查询词在同义词表中搜索同义词。

在查询执行期间,SQL 搜索会检查单个单词单元或位置搜索短语是否存在任何同义词。例如,在同义词表中定义了两个同义词对(“persons”、“people”)(“walk”、“run”)。对短语“persons walk”执行 SQL 搜索查询。如果同义词表与查询关联,则 SQL 搜索不仅返回与原始查询匹配的文档,还返回与以下任一查询匹配的文档:“people run”、“people walk”“people run”

但是,如果 search_items 字符串为 '"persons walk"',则不会发生查询扩展,因为 SQL 搜索不会扩展位置短语搜索中的任何单词。位置短语本身是查询扩展的最小单位。但是,如果定义一个同义词对,如 (“persons walk”“persons walk and run”),SQL 搜索会将查询“persons walk”扩展为“persons walk and run”。如果 ToTerm 包含多个单词,SQL 搜索会将其视为位置短语。 ToTerm 可以是任何有效的位置短语;它可以包含 *?通配符。

注意:同义词表不能与正则表达式搜索 (search_option=4) 一起使用。

高亮

可以使用 search_items 语法突出显示返回文本中的单词。突出显示语法为:

(text,search_items,search_option)

search_items:突出显示使用与搜索相同的 search_items 语法。这允许对返回的记录使用相同的 search_items 值并突出显示这些记录中导致它们返回的字符串。这还允许使用 TestSearchString() 方法来验证突出显示的 search_items 语法。但是,由于突出显示应用于每个匹配项的每个实例,因此突出显示会忽略 search_items 字符串中的 search_items 语法 ANDORNOT 逻辑运算符。

search_option:可选的 search_option 可以是 0(默认值)或 4(正则表达式)。

可以使用以下任一方法应用突出显示:

  • 选择突出显示的项目:
SELECT %iFind.Highlight(Narrative,'"visibility [1-4] mile*" AND "temp* ? degrees"') 
FROM Aviation.TestSQLSrch 
WHERE %ID %FIND search_index(NarrBasicIdx,'"visibility [1-4] mile*" AND "temp* ? degrees"',0,'en')
  • 实用方法突出显示:

可以使用 %iFind.Utils.Highlight()方法来执行 SQL 搜索并对结果应用突出显示。

默认情况下,突出显示会在字符串中的适当位置插入 <b> and </b> (bold) XML 标记。默认情况下,突出显示不区分大小写。

突出显示可与任何 search_option 一起使用,包括正则表达式搜索 (search_option=4),如以下示例所示:

  SET x="Time flies like an arrow. other stuff. Fruit flies like a banana."
  WRITE ##class(%iFind.Utils).Highlight(x,"\p{LU}(\p{L}|\s)+",4)

与单词搜索一起使用时,此方法会单独突出显示每个指定单词的每次出现。

当与位置短语搜索一起使用时,此方法会突出显示位置短语的每次出现。

讨论 (0)1
登录或注册以继续