1

我尝试在控制台应用程序中使用内容查询,但它抛出异常“对象引用未设置为对象的实例”。请帮我解决这个问题。

var startSettings = new RepositoryStartSettings
            {
                Console = Console.Out,
                StartLuceneManager = false,
                IsWebContext = false,                    
                PluginsPath = AppDomain.CurrentDomain.BaseDirectory,
            };

            using (Repository.Start(startSettings))
            {
                try
                {
                    string path = "/Root/Sites/Default_Site/workspaces/Document/HACCP/Document_Library/SanXuat/ChonLocChuanBiDiaDiemSXRau";
                    string fieldName1 = "Name";

                    var content = Content.Load(path);

                    int count = ContentQuery.Query(".AUTOFILTERS:OFF .COUNTONLY Infolder:" + path).Count;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }  
           }
4

1 回答 1

3

如果要执行内容查询,则必须在启动存储库时启用LuceneManager,因为该组件负责查询。

new RepositoryStartSettings
{
   Console = Console.Out,
   StartLuceneManager = true, // <-- this is necessary
   IsWebContext = false,                    
   PluginsPath = AppDomain.CurrentDomain.BaseDirectory,
}

请确保所有配置值都到位(例如索引目录路径,启用外部搜索引擎)。您可以从导出或导入工具的配置文件中复制它们。

还有一些注意事项:

  • 在内容查询中,请始终将路径表达式括在引号中,因为如果路径中有空格,则会导致难以找到的查询错误(因为它会返回不同的结果集)。例如:

    InTree:'/根目录/我的文件夹'

或者您可以使用确保相同的内置参数功能:

// note the @0 parameter, which is a 0-based index
ContentQuery.Query("+TypeIs:Article +InTree:@0", null, containerPath); 
于 2016-11-16T12:00:14.770 回答