1

如何让 Lucene 包含在站点根目录之外索引的结果,例如。基于 fx 根的东西。“/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>
 ...

并且可以完美运行,在搜索时获取所有子项。

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

 ...
 <root>/sitecore/content/newSubfolder/Subfolder/Subfolder</root>
 ...

现在我的搜索从来没有找到任何东西!
有谁知道这里可能是什么问题。

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

完整索引:

<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>
4

1 回答 1

0

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

 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));

站点核心模块\Lucene Search\SearchManager.cs

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

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

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

记得把新建的 LuceneSearch.dll 复制到网站项目的 bin 目录下。

于 2013-02-08T06:34:29.197 回答