ContentSearchManager 没有 return 任何结果
ContentSearchManager does not return any Results
Sitecore 8 ContentSearchManager 没有 return 任何结果。下面是我的代码:
public IQueryable<SearchResultItem> PerformSearch()
{
var index = ContentSearchManager.GetIndex("sitecore_web_index");
using (var searchContext = index.CreateSearchContext())
{
var locations = searchContext.GetQueryable<SearchResultItem>()
.Where(i => i.Path.StartsWith("/sitecore/content/GlobalReferences/Locations"));
var item = locations.ToList();
return locations;
}
}
代码快照:
Sitecore 树:
我需要做些什么才能让它发挥作用吗?喜欢在配置中设置任何东西吗?
到目前为止我尝试过的:
- 重建索引[无结果]
注:
我正在使用 lucene。
更新:
当我切换到 master 时检索记录。
var index = ContentSearchManager.GetIndex("sitecore_master_index");
更新 2 (09/08/2015)
我在网络中执行索引时似乎遇到了问题。
Job started: Index_Update_IndexName=sitecore_web_index|#Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Lucene.Net.Index.CorruptIndexException: checksum mismatch in segments file
at Lucene.Net.Index.SegmentInfos.Read(Directory directory, String segmentFileName)
at Lucene.Net.Index.IndexFileDeleter..ctor(Directory directory, IndexDeletionPolicy policy, SegmentInfos segmentInfos, StreamWriter infoStream, DocumentsWriter docWriter, HashSet`1 synced)
at Lucene.Net.Index.IndexWriter.Init(Directory d, Analyzer a, Boolean create, IndexDeletionPolicy deletionPolicy, Int32 maxFieldLength, IndexingChain indexingChain, IndexCommit commit)
at Lucene.Net.Index.IndexWriter..ctor(Directory d, Analyzer a, Boolean create, MaxFieldLength mfl)
at Sitecore.ContentSearch.LuceneProvider.Sharding.LuceneShard.Reset()
at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.DoReset(IProviderUpdateContext context)
at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.PerformRebuild(IndexingOptions indexingOptions, CancellationToken cancellationToken)
at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.Rebuild()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Jobs.Job.ThreadEntry(Object state)
有什么解决办法吗?到目前为止我尝试过的是:
- 重建索引
- 重建树
- 全部重建
但似乎没有任何效果。
有没有办法清理网站的索引以便我可以从头开始编制索引?
解决方案:
因为索引已损坏。我删除了\Data\indexes里面的文件和文件夹。然后在重建之后一切似乎都正常工作。
我也找到了this。它也有帮助。
仔细检查 sitecore_web_index 的配置,确保索引的根路径已设置,以便它将包含全局引用路径。
包含目录中应该有一个补丁文件。
作为参考,应该这样设置:
http://www.mikkelhm.dk/blog/defining-a-custom-index-in-sitecore-7-the-absolute-minimum
如果您仍然无法获取任何数据,我建议您下载 Luke 以查看索引中的确切内容
下面的答案并且您是否 100% 确定您搜索的项目已发布?我知道这很愚蠢,但有时我们似乎只是忘记发布。
解决方案:
因为索引已损坏。我删除了 \Data\indexes 中的文件和文件夹。然后在重建之后一切似乎都正常工作。
Sitecore 8 ContentSearchManager 没有 return 任何结果。下面是我的代码:
public IQueryable<SearchResultItem> PerformSearch()
{
var index = ContentSearchManager.GetIndex("sitecore_web_index");
using (var searchContext = index.CreateSearchContext())
{
var locations = searchContext.GetQueryable<SearchResultItem>()
.Where(i => i.Path.StartsWith("/sitecore/content/GlobalReferences/Locations"));
var item = locations.ToList();
return locations;
}
}
代码快照:
Sitecore 树:
我需要做些什么才能让它发挥作用吗?喜欢在配置中设置任何东西吗?
到目前为止我尝试过的:
- 重建索引[无结果]
注:
我正在使用 lucene。
更新:
当我切换到 master 时检索记录。
var index = ContentSearchManager.GetIndex("sitecore_master_index");
更新 2 (09/08/2015)
我在网络中执行索引时似乎遇到了问题。
Job started: Index_Update_IndexName=sitecore_web_index|#Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Lucene.Net.Index.CorruptIndexException: checksum mismatch in segments file
at Lucene.Net.Index.SegmentInfos.Read(Directory directory, String segmentFileName)
at Lucene.Net.Index.IndexFileDeleter..ctor(Directory directory, IndexDeletionPolicy policy, SegmentInfos segmentInfos, StreamWriter infoStream, DocumentsWriter docWriter, HashSet`1 synced)
at Lucene.Net.Index.IndexWriter.Init(Directory d, Analyzer a, Boolean create, IndexDeletionPolicy deletionPolicy, Int32 maxFieldLength, IndexingChain indexingChain, IndexCommit commit)
at Lucene.Net.Index.IndexWriter..ctor(Directory d, Analyzer a, Boolean create, MaxFieldLength mfl)
at Sitecore.ContentSearch.LuceneProvider.Sharding.LuceneShard.Reset()
at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.DoReset(IProviderUpdateContext context)
at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.PerformRebuild(IndexingOptions indexingOptions, CancellationToken cancellationToken)
at Sitecore.ContentSearch.LuceneProvider.LuceneIndex.Rebuild()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Jobs.Job.ThreadEntry(Object state)
有什么解决办法吗?到目前为止我尝试过的是:
- 重建索引
- 重建树
- 全部重建
但似乎没有任何效果。
有没有办法清理网站的索引以便我可以从头开始编制索引?
解决方案:
因为索引已损坏。我删除了\Data\indexes里面的文件和文件夹。然后在重建之后一切似乎都正常工作。
我也找到了this。它也有帮助。
仔细检查 sitecore_web_index 的配置,确保索引的根路径已设置,以便它将包含全局引用路径。
包含目录中应该有一个补丁文件。
作为参考,应该这样设置:
http://www.mikkelhm.dk/blog/defining-a-custom-index-in-sitecore-7-the-absolute-minimum
如果您仍然无法获取任何数据,我建议您下载 Luke 以查看索引中的确切内容
下面的答案并且您是否 100% 确定您搜索的项目已发布?我知道这很愚蠢,但有时我们似乎只是忘记发布。
解决方案:
因为索引已损坏。我删除了 \Data\indexes 中的文件和文件夹。然后在重建之后一切似乎都正常工作。