我希望能够在某个目录中进行搜索。例如。假设用户点击了网站顶部的“不同类型的列车”链接。然后,该页面列出了带有搜索框的不同类型的列车。我想要用户在搜索框中键入的任何内容只是为了搜索“火车类型”部分中的页面 - /sitecore/content/LOTW/Home/trains
内的任何内容以及网站上没有其他页面。我目前正在使用:
protected void searchIcon_Click(object sender, EventArgs e)
{
PerformSearch();
}
private void PerformSearch()
{
/* Changed from Shared Source, to use different path finding, and context database */
Item pointerItem = Sitecore.Context.Database.SelectSingleItem("/sitecore/content/LOTW/Global/Settings/Config/Pointers/Search Results");
if (pointerItem != null)
{
Item results = Sitecore.Context.Database.GetItem(new ID(pointerItem["Item"]));
if (results != null)
{
string results_url = LinkManager.GetItemUrl(results) + "?search=" + Server.UrlEncode(search.Text);
Response.Redirect(results_url);
}
else
{
search.ForeColor = Color.Red;
search.Text = "Unable to find results item";
}
}
}
而是搜索整个网站。我对Sitecore中的搜索一无所知,所以我有点迷失了!
答案 0 :(得分:1)
Sitecore在项目上具有Axis名称空间,允许您从特定项目访问后代,但如果您有超过25个孩子,则搜索变得非常慢。
要快速搜索,请使用Lucene索引。 Sitecore是Lucene索引的标准配置。
要简化对索引的访问,您应该下载Advanced Database Crawler免费软件/开源模块。
您可以在此处详细了解如何设置以及如何访问索引:
Using the Sitecore open source AdvancedDatabaseCrawler Lucene indexer