2016-07-25 6 views
2

私はすべてクリアFilterQuery Sitecore.ContentSearchでLINQクエリ

var index = ContentSearchManager.GetIndex(IndexName); 
var context = index.CreateSearchContext() 
var results = context.GetQueryable<SolrCoreModel>().GetResults()... 

とSolrのクエリを行うことができますが、常に索引名で生のSolrクエリーFQパラメータであり追加されます

&fq=_indexname:(solr_core) 

どのように私はそれを削除することができますし、 '明確な'クエリを送信しますか?

答えて

2

SitecoreとContentSearchManagerでは実行できません。

これは、SitecoreがSolrにデータを格納する方法です。これを「インデックス」に分割します。 Sitecore APIを使用し、インデックス名をSolrに渡すことなく照会することはできません。

Sitecoreが任意のアイテムにインデックスを付けると、 Homeアイテムの場合は、masterデータベースのHomeアイテムの場合は、_indexnameフィールドが格納されます。 sitecore_master_indexwebデータベースの同じ項目にはsitecore_web_indexとマークされます。

+0

FilterQueryではなく、Queryで何とか渡すことができますか? – Saint

+0

Sitecore APIを完全にスキップして、低レベルの 'Solr.net'を試す必要があると思います。それが可能かどうかはわかりません。なぜあなたもこれに挑戦していますか? –

+0

私は別のスキーマを持つ2つの他のコアのために 'マージされた'コアとして使用しているカスタムsolrコアを持っています。 'fq'で何かが渡されたときのように、両方のスキーマにフィールドを含める必要があります。 'q'にはそのような制約はありません。 – Saint