2016-01-23 53 views
2

我正在將Sitecore Lucene搜索提供程序切換到Solr。核心已經配置好了,我可以毫無問題地重建所有CORE。Sitecore GetQueryable Filter從Lucene切換後不返回SOLR的任何結果

我還更新了每個Solr映射需求的計算索引字段。但是,出於奇怪的原因,下面的查詢沒有返回任何結果。

using (var context = index.CreateSearchContext(SearchSecurityOptions.DisableSecurityCheck)) 
      { 

       var query = context.GetQueryable<ArticleSearchResultItem>().Filter(item => item.Category == categoryId); 

       var results = query.GetResults(); 
} 

但是,當我這樣做,我可以匹配categoryid,即如果條件,我可以打內部。

using (var context = index.CreateSearchContext(SearchSecurityOptions.DisableSecurityCheck)) 
      { 
       var query1 = context.GetQueryable<ArticleSearchResultItem>(); 
       foreach (var q in query1) 
       { 
        if (q.Category == categoryId) 
        { 
         //Matched Category ID 
        } 
       } 

} 

第二個測試上述確認:

  1. 我從SOLR
  2. 得到的數據和結果具有匹配的categoryId

但我只是不明白爲什麼第一個不符合它!

會明白,如果你可以查看下面我POCO和字段映射:

字段映射:

<fields hint="raw:AddComputedIndexField"> 
       field fieldName="articlecategory" returnType="string">MyNameSpace.ComputedFields.ArticleCategoryField, MyNameSpace.Business</field> 
       .... 

POCO:

public class ArticleSearchResultItem : BaseSearchItem 
    { 
     [IndexField("articlecategory")] 
     [TypeConverter(typeof(IndexFieldIDValueConverter))] 
     public ID Category { get; set; } 
     } 

上Search.log

下方注意的23732 2016:01:23 22:49:46 INFO序列化查詢 - ?q = articlecategory_s:(e83405719a5c4ff1 8595d685c9103e0f)&行= 2147483647 & FL = *,得分& FQ = _indexname:(sitecore_web_index)

試圖複製粘貼到Solr管理下面的查詢,沒有東西返回。

?q=articlecategory_s:(e83405719a5c4ff18595d685c9103e0f)&rows=2147483647&fl=*,score&fq=_indexname:(sitecore_web_index) 
+0

嘗試檢查Web UI中索引的內容。你可以通過使用「核心選擇器」下拉菜單,然後我認爲它是在左側菜單中的「查詢」或類似的東西。通過使用json對象設置'q'參數來查詢。 –

回答

2

管理來解決這個問題..

的問題是,計算索引字段具有其中ID被轉化爲短GUID邏輯。

我刪除了這一行並重新索引並開始從SOLR獲取數據。