我構建了一個函數,用於傳遞想要搜索的國家/地區字符串以及想要從搜索結果中獲取的文章數量。過濾SearchResultCollection中的項目
但是,當搜索即將從Sitecore的內容項背,我不希望顯示其在其標題場的首發星號(*)的項目。下面是函數名稱:
protected IEnumerable<Item> ShowHomePageNews(int numOfArticles, string stringofCountries)
{
List<Item> items = new List<Item>();
Sitecore.Search.Index indx = SearchManager.GetIndex("my_index_name");
using (IndexSearchContext searchContext = indx.CreateSearchContext())
{
CombinedQuery query = new CombinedQuery();
QueryBase catQuery = new FieldQuery("countries", stringofCountries); //FieldName, FieldValue.
SearchHits results = searchContext.Search(catQuery); //Searching the content items by fields.
SearchResultCollection result = results.FetchResults(0, numOfArticles);
foreach (SearchResult i in result)
{
Lucene.Net.Documents.Field url = i.Document.GetField("_url");
Sitecore.Data.ItemUri itemUri = new Sitecore.Data.ItemUri(url.StringValue());
Sitecore.Data.Items.Item item = Sitecore.Context.Database.GetItem(itemUri.ToDataUri());
items.Add(item);
}
}
return items;
}
而且我呼籲我的pageLoad的這個功能:
rptHomePageNews.DataSource = ShowHomePageNews(4, 「USA」);
這是我的標記:
<asp:Panel ID="HomePageNews" runat="server">
<asp:Repeater ID="rptHomePageNews" runat="server">
<ItemTemplate>
<li>
<%--<sc:FieldRenderer ID="FieldRenderer1" FieldName="Date" runat="server" Item="<%# Container.DataItem as Sitecore.Data.Items.Item %>" />--%>
<a href="<%# Sitecore.Links.LinkManager.GetItemUrl(Container.DataItem as Sitecore.Data.Items.Item) %>">
<sc:FieldRenderer ID="FieldRenderer2" FieldName="Title" runat="server" Item="<%# Container.DataItem as Sitecore.Data.Items.Item %>" />
</a>
</li>
</ItemTemplate>
</asp:Repeater>
我應該讓我的ShowHomePageNews功能什麼樣的變化?
您在搜索做過濾感興趣,或者你願意使用搜索後LINQ查詢過濾? –
是的!我願意這樣做。 –
我的'結果'變量在這裏是0。我做錯了什麼? –