Невозможно ограничить пользовательский индекс Sitecore Lucene для / sitecore / content / Home - PullRequest
2 голосов
/ 19 марта 2011

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

1 Ответ

0 голосов
/ 09 апреля 2011

Мне удалось решить проблему с помощью Advanced Database Crawler .Отключение блока configuration/search/configuration с кодом, представленным в презентации Алекса (см. Ссылку выше), заставило все работать более или менее автоматически.

...