ContentSearchManager不返回任何结果

时间:2015-09-07 05:46:45

标签: sitecore sitecore8

Sitecore 8 ContentSearchManager不会返回任何结果。以下是我的代码:

    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;
        }
    }

代码快照:

enter image description here

Sitecore树:

enter image description here

我需要做些什么才能让它发挥作用?就像在配置中设置任何东西一样?

到目前为止我尝试过:

  • 重建指数[无结果]

注意:

我正在使用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)

任何想法如何解决?到目前为止我所尝试的是:

  • 重建指数
  • 重建树
  • 重建所有

但似乎没有任何效果。

有没有办法清理网页的索引,以便我可以从开始索引?

SOLUTION:

由于索引已损坏。我删除了\ Data \ indices中的文件和文件夹。然后在重建之后,一切似乎都能正常工作。

我还找到了this。它也有帮助。

3 个答案:

答案 0 :(得分:2)

在sitecore_web_index的配置中仔细检查是否设置了索引的根路径,以便它包含globalreferences路径。

在include目录中应该有一个补丁文件。

作为参考,它应该像这样设置:

http://www.mikkelhm.dk/blog/defining-a-custom-index-in-sitecore-7-the-absolute-minimum

如果您仍然无法获取任何数据,我建议您下载Luke以确切了解索引中的内容

https://code.google.com/p/luke/

答案 1 :(得分:0)

以下答案是否100%确定您搜索的项目已发布?我知道这很愚蠢,但有时我们似乎忘了发表。

答案 2 :(得分:0)

解决方案:

由于索引已损坏。我删除了\ Data \ indices中的文件和文件夹。然后在重建之后,一切似乎都能正常工作。