Sitecore 8.1:从Lucene切换到SOLR - 没有SearchContext的结果

时间:2016-01-25 13:52:39

标签: solr sitecore sitecore8.1

我已在 Sitecore 8.1 中切换到 SOLR 搜索,一切正常(索引正常重建)。但是,当我使用SearchContext搜索项目时,根据item.Path.Contains("")进行过滤后,我没有得到任何结果,尽管它使用 Lucene 。如果我删除item.Path.Contains(""),我会得到结果。那么,为什么它不起作用? 这是使用的代码:

        List<NewsSearchResultItem> results = new List<NewsSearchResultItem>();
        var index = ContentSearchManager.GetIndex("sitecore_web_index");

        using (IProviderSearchContext context = index.CreateSearchContext())
        {
            var tempResults = context.GetQueryable<NewsSearchResultItem>()
                   .Where(item => item.Path.Contains("/sitecore/content/News"))
                   .Take(10);

            results = tempResults.ToList();
        }

        return results.Select(s => new NewsViewModel(s.GetItem())).ToList();

2 个答案:

答案 0 :(得分:1)

Solr with Sitecore默认将文本字段存储为小写字段。

load variable cnt1 to memA; load 399 to memB compare mem A to memB put result to memC if memC eq "somthing indicating <=" do PORTB |= (1<<7); if memC something else do PORTB &= ~(1<<7); load cnt1 to memD and increment; write memD to cnt1; load 800 to memE load cnt1 to memF compare memF to memE put result to memG if memG eq "somthing indicating <=" do memF = 0, write memF to cnt1; if memG something else go to start; 子句更改为使用 1. comare cnt1-399 2. if ok - do / else 3. port high / port low 4. add one to cnt1 5. compare cnt1 and 800

Where

另外请记住添加过滤器以仅使用当前语言 - 尽管事实上它们没有特定语言的任何版本,但Solr for Sitecore项目可能会有一些文档。

答案 1 :(得分:1)

这可能是Marek所说的一个小写问题,但您也可以尝试使用Paths属性而不是Path,如下所示:

var tempResults = context.GetQueryable<NewsSearchResultItem>()
                   .Where(item => item.Paths.Contains(Sitecore.Data.ID.Parse("News Item ID (GUID)")))
                   .Take(10);