Search Sitecore Lucene搜索索引和子文件夹

Search Sitecore Lucene搜索索引和子文件夹,search,lucene,sitecore,root,Search,Lucene,Sitecore,Root,如何使Lucene包含在siteroot之外编制索引的结果,例如基于fx根的stuff。“/sitecore/content/stuff”,但不放在“/sitecore/content/Home”中 查看“/sitecore modules/LuceneSearch/”中的SearchManager.cs,SiteRoot被定义为“sitecore.Content.Site.Startpath”,但对该文件进行任何更改似乎都会产生任何影响 注: 我只使用“LuceneResults”.ascx和

如何使Lucene包含在siteroot之外编制索引的结果,例如基于fx根的stuff。“/sitecore/content/stuff”,但不放在“/sitecore/content/Home”中

查看“/sitecore modules/LuceneSearch/”中的SearchManager.cs,SiteRoot被定义为“sitecore.Content.Site.Startpath”,但对该文件进行任何更改似乎都会产生任何影响

注:
我只使用“LuceneResults”.ascx和.cs

-----问题更新了,因为我缩小了问题的范围--

我正在尝试创建一组特定项目的索引,用于Lucene搜索。
在web.config中,我指定了一个包含以下内容的索引:

 ...
 <root>/sitecore/content/Home/Subfolder</root>
 ...
。。。
/sitecore/content/Home/子文件夹
...
这是完美无瑕的,在不进行搜索时获取所有子项

然后,我将完全相同的项目复制到新位置,并更新了我的web.config,如下所示:

 ...
 <root>/sitecore/content/newSubfolder/Subfolder/Subfolder</root>
 ...
。。。
/sitecore/content/newSubfolder/子文件夹/子文件夹
...
现在我的搜索没有找到任何东西!
有人知道这里有什么问题吗

注:
-每次更改时,我都会重建搜索索引数据库。
-在“Luke”中,索引似乎很好,这里的搜索会产生正确的结果

完整索引:

<index id="faqindex" type="Sitecore.Search.Index, Sitecore.Kernel">
    <param desc="name">$(id)</param>
    <param desc="folder">__faq</param>
    <Analyzer ref="search/analyzer"/>
    <locations hint="list:AddCrawler">
        <resources type="Sitecore.Search.Crawlers.DatabaseCrawler, Sitecore.Kernel">
            <database>master</database>
                      <root>/sitecore/content/MyContent/Snippets/FAQ</root>
            <include hint="list:IncludeTemplate">
                <faqblock>{3340AAAE-B2F8-4E22-8B7B-F3EDDB48587E}</faqblock>
            </include>
            <tags>faqblock</tags>
            <boost>1.0</boost>
        </resources>
    </locations>
</index>

$(id)
__常见问题
主人
/sitecore/content/MyContent/Snippets/FAQ
{3340AAAE-B2F8-4E22-8B7B-F3EDDB48587E}
FAQ块
1

听起来您正在使用Sitecore Marketplace的模块。此模块的代码将搜索结果限制为站点根目录及其子目录:

 public SearchManager(string indexName)
 {
   SearchIndexName = indexName;
   Database database = Factory.GetDatabase("master");
   var item = Sitecore.Context.Site.StartPath;
   SiteRoot = database.GetItem(item);
}
[...]
public SearchResultCollection Search(string searchString)
{
  //Getting index from the web.config
  var searchIndex = Sitecore.Search.SearchManager.GetIndex(SearchIndexName);
  using(IndexSearchContext context = searchIndex.CreateSearchContext())
  {
     SearchHits hits = context.Search(searchString, new SearchContext(SiteRoot));
sitecore模块\Lucene搜索\SearchManager.cs

假设Web.config的站点部分中的“网站”节点具有startItem=“/home”,则不会返回“home”层次结构之外的结果

如果下载此项目的源代码,并将填充SiteRoot的行编辑为以下内容,则将返回新项:

SiteRoote = database.GetItem("/sitecore/content");

请记住将新的LuceneSearch.dll复制到网站项目的bin目录。

如果重新编制索引后索引中填充了正确的项目,您应该查看用于检索搜索结果的代码。我也这么认为,但除了“根目录”之外,没有任何更改标记,即使不讨论结果的显示方式,也会返回结果。计数==0。请尝试重建索引。它可能无法解决问题,但值得一试。每次更改时,我都会重建索引。问题更新了,因为我缩小了问题的范围。谢谢你的回答,虽然你澄清了一些事情,但这或多或少也是我最后的结论。答案被接受。