public static SearchResult search(Query query, List<XmlNode> headerItemXmlNodeList)
{
TopDocs docs = searcher.Search(query, 1000);
SearchResult sro = new SearchResult();
sro.PageSize = 10;
sro.CurrentPage = 1;
sro.NumberOfHits = 100;
List<HeaderItem> Header = new List<HeaderItem>();
List<HeaderItem> DefaultHeader = new List<HeaderItem>();
// create id
HeaderItem id = new HeaderItem();
id.DisplayName = "ID";
id.Name = "ID";
id.DataType = "Integer";
sro.Id = id;
Header.Add(id);
DefaultHeader.Add(id);
foreach (XmlNode ade in headerItemXmlNodeList)
{
HeaderItem hi = new HeaderItem();
hi = new HeaderItem();
hi.Name = ade.Attributes.GetNamedItem("lucene_name").Value;
hi.DisplayName = ade.Attributes.GetNamedItem("display_name").Value;
Header.Add(hi);
if (ade.Attributes.GetNamedItem("default_visible_item").Value.ToLower().Equals("yes"))
{
DefaultHeader.Add(hi);
}
}
List<Row> RowList = new List<Row>();
foreach (ScoreDoc sd in docs.ScoreDocs)
{
Document doc = searcher.Doc(sd.Doc);
Row r = new Row();
List<object> ValueList = new List<object>();
ValueList = new List<object>();
ValueList.Add(doc.Get("doc_id"));
foreach (XmlNode ade in headerItemXmlNodeList)
{
String fieldType = ade.Attributes.GetNamedItem("type").Value;
String luceneName = ade.Attributes.GetNamedItem("lucene_name").Value;
if (fieldType.ToLower().Equals("facet_field"))
{
luceneName = "facet_" + luceneName;
}
else if (fieldType.ToLower().Equals("category_field"))
{
luceneName = "category_" + luceneName;
}
else if (fieldType.ToLower().Equals("property_field"))
{
luceneName = "property_" + luceneName;
}
ValueList.Add(doc.Get(luceneName));
}
r.Values = ValueList;
RowList.Add(r);
}
sro.Header = Header;
sro.DefaultVisibleHeaderItem = DefaultHeader;
sro.Rows = RowList;
return sro;
}