2
我想優化通過Sitecore ContentSearch API完成的一些Lucene/Solr查詢。具體來說,當涉及到搜索MultiListField時。優化Sitecore Lucene/Solr查詢
環境: Sitecore的8.1u2,Solr的
我有以下方法查詢multilistfield值:
public static Expression<Func<SearchResultItem, bool>> MultiFieldContainsExpression(IEnumerable<string> fieldNames, IEnumerable<string> ids)
{
//fieldNames = ["field_A", "field_X"]
//ids = [GUID_A, GUID_X]
Expression<Func<SearchResultItem, bool>> expression = PredicateBuilder.True<SearchResultItem>();
foreach (string fieldname in fieldNames)
{
ids.ForEach(id =>
{
expression = expression.Or(i => i[fieldName].Contains(IdHealper.NormalizeGuid(id, true)));
});
}
return expression;
}
產生的Lucene的查詢看起來是這樣的:
((field_A:(*GUID_A*) OR field_A:(*GUID_X*) OR field:_X:(*GUID_A*) OR field_X:(*GUID_X*)))
我希望查詢更像這樣(如果可能,甚至更好):
((field_A:(*GUID_A* OR *GUID_X*) OR (field_X:(*GUID_A* OR *GUID_X*)))
基本上,檢查字段中的值數組是否包含來自另一個數組的任何值。非常感謝你提前。