如何使用.net-core对文件进行搜索,例如查询Windows Search Platform?

时间:2018-10-08 15:22:15

标签: .net-core windows-search

我需要按文件名和内容搜索文件。当前实现使用Ole DB连接到Windows搜索。但是据我了解,Ole db不会在.net core中实现。我猜我应该使用Lucene之类的解决方案。因此,我需要一些建议,至少如何从.net-core访问Windows搜索,或者有关如何在不使用Windows搜索的情况下以跨平台方式进行搜索的任何想法。

1 个答案:

答案 0 :(得分:0)

基本上,您有两种选择。您可以掌握Windows 7 SDK中的FTQuery工具(FTQuery.exe),并在System.Diagnostics中使用Process Class通过解析标准输出来获取结果。

或者,您可以使用下面的代码作为控制器中的操作来创建一个单独的ASP.NET Web API 2项目,以充当Windows Search和.NET Core之间的桥梁。

public async Task<IHttpActionResult> Post()
{
    var data = new ArrayList();

    var conn = new OleDbConnection("Provider=Search.CollatorDSO;Extended Properties='Application=Windows'");
    await conn.OpenAsync();

    string sql = await Request.Content.ReadAsStringAsync();
    var cmd = new OleDbCommand(sql, conn);

    using (var rdr = await cmd.ExecuteReaderAsync(CommandBehavior.CloseConnection))
    {
        while (await rdr.ReadAsync())
        {
            var row = new Dictionary<string, object>();
            for (int i = 0; i < rdr.FieldCount; i++)
            {
                if (!rdr.IsDBNull(i))
                    row.Add(rdr.GetName(i), rdr.GetValue(i));
            }
            data.Add(row);
        }
    }

    return Json(data);
}