Hi Nazim,
There was a similar question on the forums not too long ago. But that used Nested2Find which I don't think is available for Find 1 (CMS 6 R2). But maybe you can use the source code to make it Find 1 compatible?
http://world.episerver.com/Forum/Developer-forum/EPiServer-Search/Thread-Container/2014/6/Searching-a-list-of-complex-objects/
Hi,
Thanks Toni very much for your reply, Here is the code where I am defining the Nested object.
//Custom class for EventOccurances defined
public class EventOccurances
{
public PageReference EventId{ get; set; }
public DateTime EventDate { get; set; }
public string Location
{
get; set;
}
}
// PageType defined where I am filling the nested collection
public class EventPageType : BaseTypedPageData
{
public virtual NestedList
{
get
{
var eventOccuranceList = new NestedList
IEnumerable
foreach (var pd in children)
{
EventOccurances eventOcc = new EventOccurances();
if (pd.LocationName != null)
{
// eventOcc.EventId = pd.PageLink;
eventOcc.Location = pd.LocationName;
}
if (pd.EventDateTime != DateTime.MinValue)
{
eventOcc.EventDate = pd.EventDateTime;
}
if (eventOcc.Location != null || eventOcc.EventDate != DateTime.MinValue)
{
eventOccuranceList.Add(eventOcc);
}
}
return eventOccuranceList; //Fill the nested list from the child pages only locations and dates
}
}
}
Now on the Search Results page:-
SearchClient.Instance.Conventions.AddNestedConventions(); //Added the nested convention
var query = SearchClient.Instance.Search
if (!string.IsNullOrEmpty(Location))
{
query = query.Filter(x => x.EventOccurances.MatchItem(p => p.Location.Match(Location)));
}
var result = query.Select(x => new BaseSearchResult.SearchHit
{
Title = x.PageName,
Url = x.LinkURL(),
Text = x.Description,
PageList = x.PageaHierarchyList,
PublishedDate = x.SearchPublishDate(),
EventType = x.EventType,
EventSubject = x.MastercourseSubject,
PageDataForSearch = x.PageLink
}).GetResult();
It is throwing the same exception which is mentioned in the post you mentioned
The remote server returned an error: (400) Bad Request.
[nested] failed to find nested object under path [EventOccuranceCollection$$nested]]
On the Find Index parser:- it does not give me the value of collection as EventOccuranceCollection$$nested but as EventOccuranceCollection
property.PropertyName = property.PropertyName + "$$nested"; //this code is already definied in ModifyContract
Do you spot any problem in the code.
Did I miss anything? Why it is not adding nested keyword around it. Please if anyone can reply.
Many thanks,
Nazim
Hi,
I am using Episerver Find and the version is 6R2.
It is an event that can be occured on multiple dates.
I have two filters DateFrom and DateEnd.
I have list of date collection on which the event can happen.
I need to create a find filter which can look into DateCollection and filter the result. I need to apply in range as well as match here.
The following query gives me an error:-
query = query.Filter(x => x.EventDatesCollection.Match(DateFrom));
"Cannot resolve method Match(system.datetime). It does not seem to match datetime field."
Can anyone share the idea, how can I implement this?
Many thanks
Naz