我尝试在控制台应用程序中使用内容查询,但它抛出异常"对象引用未设置为对象的实例"。 请帮我解决这个问题。
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);
}
}
答案 0 :(得分:3)
如果要执行内容查询,则必须在启动存储库时启用 LuceneManager ,因为该组件负责查询。
new RepositoryStartSettings
{
Console = Console.Out,
StartLuceneManager = true, // <-- this is necessary
IsWebContext = false,
PluginsPath = AppDomain.CurrentDomain.BaseDirectory,
}
请确保所有配置值都已到位(例如索引目录路径,启用外部搜索引擎)。您可以从导出或导入工具的配置文件中复制它们。
还有一些说明:
在内容查询中请始终将路径表达式括在引号中,因为如果路径中有空格,则会导致难以查找的查询错误(因为它会返回不同的结果集)。例如:
InTree:'/ Root / My Folder'
或者您可以使用内置参数功能来确保相同:
// note the @0 parameter, which is a 0-based index
ContentQuery.Query("+TypeIs:Article +InTree:@0", null, containerPath);