2013-07-03 2 views
2

В моем файле Sitecore есть несколько тысяч элементов, и я просто хочу программно изменить несколько элементов. Вместо того, чтобы перестроить весь индекс lucene, который занимает много времени, я хочу обновить записи индекса для каждого элемента, который я изменяю в реальном времени. Я попыталсяКак обновить один элемент в индексе Sitecore?

item.Database.Indexes.UpdateItem(item); 

но она устарела и попросить меня использовать SearchManager.

Может ли кто-нибудь указать мне, как обновлять записи индекса для данного элемента?

PS: Я изменяю элементы из настольного приложения, а не на веб-сайт.

+1

Не являются ли данные в индекс автоматически обновляется после изменения программных элементов Sitecore? –

+0

Я изменяю элементы из настольного приложения, поэтому я должен явно обновлять индексы. На веб-сайте он автоматически обновляет индексы. –

ответ

5

Попробуйте выполнить одно из HistoryEngine.RegisterItem... методов, например:

item.Database.Engines.HistoryEngine.RegisterItemSaved(item, new ItemChanges(item)); 
item.Database.Engines.HistoryEngine.RegisterItemCreated(item); 
item.Database.Engines.HistoryEngine.RegisterItemMoved(item, oldParentId); 
+0

Hi Maras, Я пробовал ваши данные, но индекс не обновился. И мое требование - не регистрировать записи, а обновлять индекс в режиме реального времени. –

+0

Привет, Марас, ранее я пробовал только метод RegisterItemCreated(), так как я создаю новые элементы, и это не сработало. Теперь я использовал три приведенных оператора, как и после создания элемента и внесения любых изменений в него, и теперь индекс обновляется. Благодаря! –

0

Ну на самом деле нет никакой операции обновления по индексам, так что не стесняйтесь делать удалить/добавить

Смежные вопросы