第八章 使用 SQL Search - SQL 搜索示例
SQL 搜索示例
在以下示例中,SQL
搜索基本索引语法可与任何类型的 SQL 搜索索引一起使用。 SQL
搜索语义索引语法需要语义或分析索引。
这些示例要求已创建并填充 Aviation.TestSQLSrch
表,如本章前面的 SQL
搜索的索引源中所述。
为了简化显示,这些示例返回记录计数而不是记录文本本身。这些计数是与搜索条件匹配的记录数,而不是在记录中找到的匹配项数。一条记录可能包含多个匹配项,但只计算一次。
基本搜索示例
以下示例使用基本索引搜索来搜索 Aviation.TestSQLSrch
表。
搜索至少包含一个单词“electrode”
、“plug”
和“spark”
(按任何顺序)的记录:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'electrode plug spark',0)
请注意,这是单词搜索,而不是字符串搜索。因此,下面的示例可能会返回不同的结果,并且实际上可能会比前面的示例返回更多的结果:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'electrodes plug spark',0)
搜索至少包含一个以“electrode” (electrode, electrodes)
,开头的单词以及单词短“spark plug”
(任意顺序)的记录:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'electrode* "spark plug"',0)
搜索在 6
个单词的同现邻近窗口内包含以“electrode” (electrode, electrodes)
和单词短语“spark plug”
(任意顺序)的记录。请注意在共现搜索中用于指定单词和单词短语的标点符号:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'[electrode*,spark plug,1-6]',0)
搜索包含两个不同单词短语normal wear
和 "normal" wear
的记录:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'"normal wear"',0)
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'"\"normal\" wear"',0)
搜索至少一个包含字符串 seal(seal、seals、unseal、sealant、sealed、previous-sealed)
和单词短语“sparkplug”
的记录:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'*seal* "spark plug"',0)
搜索包含通配符短语 “wind from ? ? at ? knots.”
可能的值可能包 “wind from the south at 25 knots”
和“wind from 300 degrees at ten knots.”
。请注意,如果两个连续问号 (? ?)
之间有空格,则通配符正好代表两个单词;如果两个问号 (??)
之间没有空格,则通配符代表 0
到 6
个单词:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'"wind from ? ? at ? knots"',0)
下面的示例使用基本索引和正则表达式搜索(n=4
)。它搜索包含指定日期介于“1月10日”和“1月29日”
之间的字符串的记录:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrBasicIdx,'"January [1-2][0-9]"',4)
语义搜索示例
以下示例使用语义索引搜索来搜索Aviation.TestSQLSrch
表。
搜索包含NLP实体“spark plug electrodes”
:的记录:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrSemanticIdx,'{spark plug electrodes}',0)
搜索包含以“Spark Plug”
或“Spark Plugs”
结尾的NLP
实体的记录:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrSemanticIdx,'<{spark plug*}',0)
搜索同时包含以“Spark Plugs”
结尾的NLP
实体和以“Spark Plugs”
结尾的NLP
实体的记录:
SELECT COUNT(Narrative) FROM Aviation.TestSQLSrch
WHERE %ID %FIND search_index(NarrSemanticIdx,'<{spark plugs} {spark plugs}',0)