提问人:Dude named Ben 提问时间:2/8/2023 更新时间:2/8/2023 访问量:62
当 SQL 查询具有多个单词字符串到 W10 桌面搜索索引时出现异常
Exception when SQL query has multiple word string to W10 desktop search index
问:
我整理了一个基本的 Powershell 脚本来查询 W10 的 Windows 桌面搜索 (WDS) 索引。这是相关的位,
$query = "
SELECT System.DateModified, System.ItemPathDisplay
FROM SystemIndex
WHERE CONTAINS(System.Search.Contents, '$($text)')
"
$objConnection = New-Object -ComObject adodb.connection
$objrecordset = New-Object -ComObject adodb.recordset
$objrecordset.CursorLocation = 3
$objconnection.open("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';")
$objrecordset.open($query, $objConnection, $adOpenStatic)
到目前为止,我的测试一直使用单个单词,一切正常。但是当我开始使用两个词时,它因以下错误而分崩离析,
Searching for 'and then'...
SELECT System.DateModified, System.ItemPathDisplay
FROM SystemIndex
WHERE CONTAINS(System.Search.Contents, 'and then')
Exception from HRESULT: 0x80040E14
At D:\searchSystemIndex.ps1:72 char:1
+ $objrecordset.open($query, $objConnection, $adOpenStatic)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
使用资源管理器查询索引工作正常。content:"and then"
有什么想法吗?
答:
0赞
mclayton
2/8/2023
#1
根据 Windows 搜索 SQL 语法的文档和 CONTAINS 谓词中的示例,如果要搜索包含“多个单词或包含空格”的文本短语,则需要在查询中引用该短语:
类型: 短语
说明:包含多个字词或包含的空格。
例子
...WHERE CONTAINS('"computer software"')
因此,在您的示例中,您可能需要:
$text = "and then"
$query = "
SELECT System.DateModified, System.ItemPathDisplay
FROM SystemIndex
WHERE CONTAINS(System.Search.Contents, '`"$($text)`"')
"
# ^^ ^^
# quoted search phrase
(请注意,引号以反引号为前缀,否则引号将终止整个查询字符串。
如果您不是在寻找确切的短语“然后”,而只想要包含“and”和“then”的结果,那么看起来您需要执行如下操作:
类型:Boolean
说明:使用布尔运算符 AND、OR 或 NOT 组合的单词、短语和通配符字符串。 将布尔项用双引号括起来。
例:
...WHERE CONTAINS('"computer monitor" AND "software program" AND "install component"')
...WHERE CONTAINS(' "computer" AND "software" AND "install" ' )
$query = "
SELECT System.DateModified, System.ItemPathDisplay
FROM SystemIndex
WHERE CONTAINS(System.Search.Contents, '`"and`" AND `"then`"')
# ^^^^^^^^^^^^^^^^^^^^^^
# multiple independent words
"
评论
0赞
Dude named Ben
2/8/2023
真的很棒。MS 文档的链接对于所有其他对我有用的搜索方式特别有用。
0赞
mclayton
2/8/2023
@DudenamedBen - NPYW。另外,我刚刚意识到“CONTAINS 谓词”链接已损坏 - 它现在已修复......
评论