2016-08-10 18 views
1

検索コンテキストで奇妙な問題があります。 d.Path.StartsWithが存在する場合、クエリから結果が0になります。Sitecore Search APIは文字列フィールド内に何も見つかりません

私は、そのパスのフィールドが完全なパスを含んでいることを確認し、それは正しいです/私はフィールドの魔女がいくつかのsitecoreのパスから始まるが幸運を見つける検索したい。 私はバックエンドでSolrを使用しています。

string path = "/sitecore/blabla"; //just for example 
var contextIndex = ContentSearchManager.GetIndex("sitecore_master_index"); 
using (var context = contextIndex.CreateSearchContext()) 
{ 
    var results = context.GetQueryable<PackageDateDocument>() 
       .Where(d => (d.TemplateName == _templatename) && (d.Language == "en") && (d.Path.StartsWith(path))); 
    return results; 
} 

クエリに間違いがありますか?

アップデート1:それは/文字 に関連しているように、使用SolrのUI次のクエリは、場合に動作する場合 私のSolrのバージョンが4.4.0 では、/文字を追加

"q": "_fullpath:\\/sitecore\\/content\\/system\\/balabla* && _language: \"en\" && _templatename: \"My Template\"", 
+0

PackageDateDocumentクラスはSearchResultItemから継承していますか? –

+0

@SitecoreClimberはいそうです。パブリッククラスPackageDateDocument:SearchResultItem –

+0

ばかげた考えですが、 'string path ="/sitecore/blabla "'で試しましたか? – Gatogordo

答えて

0

「/」文字があるべきようですあなたの質問でエスケープされました。これは、最新のSitecoreバージョンで既に対処されているはずです。 以前のバージョンでは、パスにContainsを使用することをお勧めします。

1

この問題はSitecore 8 SP3)で修正されました。) 内部のsolr文字列に問題があります。クエリにアイテムIDとパスフィールドを使用することをお勧めします。

var results = context.GetQueryable<PackageDateDocument>() 
        .Where(d => (d.TemplateName == _templatename) 
          && (d.Language == rootTour.Language.Name) && d.Paths.Contains(item.ID)); 
関連する問題