Я пытаюсь создать новый индекс Lucene на сайте с Sitecore 6.3.1. Я использовал существующий «системный» индекс в качестве руководства, и мне удалось успешно создать новый индекс в сети и мастер для индексации всех элементов в дереве контента Sitecore.
Однако у меня возникают трудности с ограничением того, какую часть дерева контента индексирует искатель базы данных. В настоящее время поисковый индекс содержит элементы отовсюду в дереве контента (элементы контента, элементы библиотеки мультимедиа, макеты, шаблоны и т. Д.). Я хотел бы ограничить индекс только элементами в /sitecore/content/Home
.
Я создал файл в ~/App_Config/Include/Search Indexes/website.config
и вставил соответствующие разделы ниже:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<sitecore>
<!-- This works as expected.... -->
<databases>
<database id="web">
<indexes hint="list:AddIndex">
<index path="indexes/index[@id='website']" />
</indexes>
</database>
<!-- ... similar entry for master database goes here ... -->
</databases>
<!-- So does this.... -->
<indexes>
<index id="website" singleInstance="true" type="Sitecore.Data.Indexing.Index, Sitecore.Kernel">
<param desc="name">$(id)</param>
<fields hint="raw:AddField">
<!-- ... field descriptions go here ... -->
</fields>
</index>
</indexes>
<!-- This works... mostly. The "__website" directory does get created,
but the Root directive is getting ignored.
-->
<search>
<configuration type="Sitecore.Search.SearchConfiguration, Sitecore.Kernel" singleInstance="true">
<indexes hint="list:AddIndex">
<index id="website" singleInstance="true" type="Sitecore.Search.Index, Sitecore.Kernel">
<param desc="name">$(id)</param>
<param desc="folder">__$(id)</param>
<Analyzer ref="search/analyzer" />
<locations hint="list:AddCrawler">
<web type="Sitecore.Search.Crawlers.DatabaseCrawler, Sitecore.Kernel">
<Database>web</Database>
<Root>/sitecore/content/home</Root>
<Tags>content</Tags>
</web>
<!-- ... similar entry for master database goes here ... -->
</locations>
</index>
</indexes>
</configuration>
</search>
</sitecore>
</configuration>
Пара замечаний:
Это не из моего
web.config
файла; Я создал отдельный файл, чтобы распространять изменения конфигурации через пакеты Sitecore.Индекс был добавлен как в
master
, так и вweb
; Я опустил ссылки наmaster
для краткости.Sitecore определенно обрабатывает записи для
configuration/sitecore/search/configuration
. Я вижу их, когда перехожу кhttp://localhost/sitecore/admin/showconfig.aspx
, и если я изменяю одно из значений тега на что-то недопустимое (например,<Root>/nothere</Root>
), Sitecore генерирует исключение при загрузке следующей страницы.Я просмотрел содержимое индекса в IndexViewer, и определенно индексируются не те элементы (например, документ № 0 в индексе - это узел
/sitecore
).
Где я ошибаюсь? Какие изменения мне нужно внести в мой файл конфигурации, чтобы индексатор поиска игнорировал элементы за пределами /sitecore/content/Home
?