Я пытаюсь создать новый индекс 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
?