Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
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