Windows 搜索查询 c#
Windows Search query c#
我正在尝试搜索包含短语或其名称包含短语的文件。
我得到了一个有时有结果的查询,但我不知道返回结果的时间和原因。
这是我正在使用的查询:
SELECT TOP 5 System.ItemPathDisplay
FROM SystemIndex
WHERE scope ='file:'
AND (FREETEXT('MYPHRASE')
OR Contains(System.FileName,'MYPHRASE'))
AND (Contains(System.ItemType,'.txt')
OR Contains(System.ItemType,'.docx')
OR Contains(System.ItemType,'.pptx')
OR Contains(System.ItemType,'.xlsx')
OR Contains(System.ItemType,'.pdf'))
我只想获取所有包含 MYPHRASE 名称或内容中包含它的文件。
这是我的 oleconnectionstring:
string connectionString = "Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\"";
OleDbConnection connection = new OleDbConnection(connectionString);
谁能告诉我我的查询有什么问题?
您可以在 C# 代码中进行递归搜索,例如
void DirSearch(string MYPHRASE)
{
try
{
foreach (string d in Directory.GetDirectories(MYPHRASE))
{
foreach (string f in Directory.GetFiles(d, txtFile.Text))
{
lstFilesFound.Items.Add(f);
}
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}
来自 this microsoft article which goes into good detail about how to do it with a full code example. Microsoft also offers a search SDK 根据您的具体情况,它也可能有所帮助,可能值得一试。
编辑:Here 是一个不错的博客,它像您一样以 sql 的风格来做这件事,而且您似乎说的很对。他确实提到了您可能必须如何将文件放入索引才能显示,因此可能值得一试。
我正在尝试搜索包含短语或其名称包含短语的文件。
我得到了一个有时有结果的查询,但我不知道返回结果的时间和原因。
这是我正在使用的查询:
SELECT TOP 5 System.ItemPathDisplay
FROM SystemIndex
WHERE scope ='file:'
AND (FREETEXT('MYPHRASE')
OR Contains(System.FileName,'MYPHRASE'))
AND (Contains(System.ItemType,'.txt')
OR Contains(System.ItemType,'.docx')
OR Contains(System.ItemType,'.pptx')
OR Contains(System.ItemType,'.xlsx')
OR Contains(System.ItemType,'.pdf'))
我只想获取所有包含 MYPHRASE 名称或内容中包含它的文件。
这是我的 oleconnectionstring:
string connectionString = "Provider=Search.CollatorDSO;Extended Properties=\"Application=Windows\"";
OleDbConnection connection = new OleDbConnection(connectionString);
谁能告诉我我的查询有什么问题?
您可以在 C# 代码中进行递归搜索,例如
void DirSearch(string MYPHRASE)
{
try
{
foreach (string d in Directory.GetDirectories(MYPHRASE))
{
foreach (string f in Directory.GetFiles(d, txtFile.Text))
{
lstFilesFound.Items.Add(f);
}
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}
来自 this microsoft article which goes into good detail about how to do it with a full code example. Microsoft also offers a search SDK 根据您的具体情况,它也可能有所帮助,可能值得一试。
编辑:Here 是一个不错的博客,它像您一样以 sql 的风格来做这件事,而且您似乎说的很对。他确实提到了您可能必须如何将文件放入索引才能显示,因此可能值得一试。