• 🚨 Ещё можно успеть на курс «OSINT: технология боевой разведки» от Академии Кодебай

    🔍 Изучите методы разведки с использованием открытых источников (OSINT) для проведения успешных атак.
    🛠️ Освойте ключевые инструменты, такие как Maltego, TheHarvester и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальную разведку.
    🧠 Развивайте навыки, которые помогут вам стать экспертом в области информационной безопасности.

    Запись открыта до 23 мая Подробнее о курсе ...

Обновление Индексов Бд

  • Автор темы Автор темы JohnLemon
  • Дата начала Дата начала
J

JohnLemon

Здравствуйте, существует небольшая проблемка, использую поиск по вьюшке на xpages :
Код:
var tmpArray = new Array("");
var cTerms = 0;
if(sessionScope.searchFIO != null & sessionScope.searchFIO != "") {
tmpArray[cTerms++] = '(FIELD NamePatient = "*' + sessionScope.searchFIO + '*")';
}

if(sessionScope.searchNapr != null & sessionScope.searchNapr != "") {
tmpArray[cTerms++] = '(FIELD NDirection = "*' + sessionScope.searchNapr + '*")';
}

if(requestScope.dateStart != null & requestScope.dateStart != "") { 
var d = requestScope.dateStart;
//tmpArray[cTerms++] = "(FIELD Date = "*' + @Day(d)+"/"+@Month(d)+"/"+@Year(d) + '*")";
tmpArray[cTerms++] = "(FIELD DDirection >= " + @Day(d)+"/"+@Month(d)+"/"+@Year(d) + ")";
}

if(requestScope.dateEnd != null & requestScope.dateEnd != "") { 
var d = requestScope.dateEnd;
//tmpArray[cTerms++] = "(FIELD Date = "*' + @Day(d)+"/"+@Month(d)+"/"+@Year(d) + '*")";
tmpArray[cTerms++] = "(FIELD DDirection <= " + @Day(d)+"/"+@Month(d)+"/"+@Year(d) + ")";
}

qstring = tmpArray.join(" AND ").trim();
sessionScope.queryString = qstring; 
return qstring
После добавления новых данных, постоянно необходимо обновлять индексы в ручную иначе не находит, как сделать обновление в автомате, при загрузке страницы например ????
 
Ну по идее сервер сам должен обновлять виды.
Ну а если не случилось - у страницы есть серверное событие до загрузки. Там бери объект вида и обновляй... как LotusScript
 
Ну по идее сервер сам должен обновлять виды.
Ну а если не случилось - у страницы есть серверное событие до загрузки. Там бери объект вида и обновляй... как LotusScript
А поподробнее можно ? Дело я думаю не в видах а индексах, во вьюхе на xpages я вижу это значение, а когда пытаюсь найти у меня пустая вьюшка, если захожу в properties бд, в индексы и делаю update то все находит норм.
 
Поиск полнотекстовый что ли? Дык полнотекстовый индекс мгновенно не обновляется.
 
Почитайте тут:

ну и тут

последние рекомендации имхо спорны - на счет db.updateFTIndex(true), использование FTUPDATE_IDLE_TIME_MS более правильно.
 
Так.. код поиска это хорошо, но давай процесс по порядку!
Откуда создается документ? Каким образом?
В нормальном виде новый документ созданный из web появляется сразу.. достаточно просто обновить контрол вида, но в поиске отобразится через n-времени после обновления индекса базы.
 
может начнём по другому, а что это за поиск такой?
как видно из начального поста, это фио+что-то+дата старт+дата енд.
Вот есть такая дикая необходимость создать документ и тут же его искать? Темболее по таким нехилым 4-рёхслойным запросом?
Ещё раз хочется напомнить, что это не реалиционка, и применять запросы можно, но не так часто. Если для реалиационки это единственный сопсоб показать инфу, это сделать запрос, то для лотусов есть вьюхи!!!
 
Поиск полнотекстовый что ли? Дык полнотекстовый индекс мгновенно не обновляется.
Да полнотекстовый, а через сколько он обновляется и где можно настроить?
Вот есть такая дикая необходимость создать документ и тут же его искать?
Да есть необходимость, один человек будет заводить сотрудника, а второй потом искать минут через 5 максимум )
Откуда создается документ? Каким образом?
Через data, doc.save() сохраняю
 
а вот когда создаёшь полнотекстовый индекс, в окошке, внимательней посмотри ;-)
 
а как вы дожидаетесь? Как это выглядит? Что должно произойти? Сервак подойдёт к вам со спины, пошлёпает по плечу и скажет: "Мой генерал, по вашему заданию печенюшки были захвачены!" Так чтоли? Опиши как обязан выглядеть момент того, что сервак создал индексы. Также опиши как ты проверяешь, что у тебя все документы проиндексированны.
 
а как вы дожидаетесь? Как это выглядит? Что должно произойти? Сервак подойдёт к вам со спины, пошлёпает по плечу и скажет: "Мой генерал, по вашему заданию печенюшки были захвачены!" Так чтоли? Опиши как обязан выглядеть момент того, что сервак создал индексы. Также опиши как ты проверяешь, что у тебя все документы проиндексированны.
В том то и дело что я не знаю как проверять и как обновлять, я создал индекс там указал обновление immediate. Добавляю запись, во вьюшке она есть, а если в поиске забиваю это значение - вьюшка становиться пустой, то есть не находит. Вообще необходимо так, есть сотрудник, он забивает карточку сотрудника, далее в в другом кабинете другой пользователь уже будет искать эту карточку. Поиск необходим по нескольким полям например по дате и фио и статусу и т.д. Может быть есть более простое решение ? без индексов ?
 
Вообще необходимо так, есть сотрудник, он забивает карточку сотрудника, далее в в другом кабинете другой пользователь уже будет искать эту карточку.
Есть еще 3 варианта (как минимум).
1. Нарисовать красивый вид со всеми нужными полями и сортировками - пусть смотрят в нем.
2. Использовать метод Search - медленный, но не требует полнотекстового индекса.
3. Написать свой поиск - перебирать документы, проверять поля. В случае с XPages, наскока я понимаю, можно хранить коллекцию док-тов (или даже массивы значений их полей) в глобальной переменной. Т.е., можно иметь кэш...
 
>Вообще необходимо так, есть сотрудник, он забивает карточку сотрудника, далее в в другом кабинете другой пользователь уже будет искать эту карточку.
Если используется одна и та же БД и у пользователей настроена почта - можно прислать письмо другому пользователю о том, что создана/заполнена карточка сотрудника со ссылкой на документ и ему достаточно пройти по ссылке и искать не надо будет.
 
Если используется одна и та же БД и у пользователей настроена почта - можно прислать письмо другому пользователю о том, что создана/заполнена карточка сотрудника со ссылкой на документ и ему достаточно пройти по ссылке и искать не надо будет.
Или завести папку - "Новые докуметы", и все вновь созданные кидать в нее. Ночью чистить.
 
Странный какой-то процесс.
Ну вместо полнотекстового поиска можно попробовать обойтись ключами. У вида свойства keys.
Это может быть одно поле или группа полей.
 
JohnLemon, похоже Вы не врубаетесь в сам процесс.
"Вьюшка" на странице (как Вы её называете) может не иметь ничего общего с notesView - это просто таблица с данными. И не важно, как она нарисована: штатными контролами - repeat, view, datatable ... или хоть врукопашную - сами из строк\полей составили. И неважно, как её набили данными.
При использовании отбора данных в неё с помощью полнотекстового поиска перед отбором надо обновлять полнотекстовый индекс.
Если база на сервере - он это делает сам, но не сразу. Если на клиенте - надо вручную (кнопой или скриптом). В любом случае, такая работа очень накладна по ресурсам. В вашем случае не надо так делать.
Если Source для "вьюшки" notesView, индекс View (не путать с полнотекстовым), обновляется автоматом, если в view попадает новый док (или удаляется).
Можно, например так, берёте notesView где отобраны ВСЕ нужные Вам доки (SELECT Form = "моя форма" + ещё что-то, например), перебираете все доки оттуда, сравнивая нужные поля по критерию отбора.
"Правильные" доки собираете в какой нибудь Array, который и скармливаете репитеру (или dataTable или ещё как...).
Получается полная аналогия Folder из классики.
Можно использовать просто штатные контролы (что логичнее всего) View или dataTable (c Source = Ваш notesView) сразу отфильтровав (by category name or by column value).
ЗЫ
если by column value, в колонке можно "собрать" инфу из всех нужных полей и использовать частичное сравнение (без exact match).
Сравнивается строка с шаблоном слева-направо.
 
После добавления новых данных, постоянно необходимо обновлять индексы в ручную иначе не находит, как сделать обновление в автомате, при загрузке страницы например ????
Попробуй так -
 
susinmn, подозреваю, что полнотекстовое индексирование все-таки задумывалось как неспешная, фоновая задача.
Иначе наверняка существовал бы метод у NotesDocument типа PutInFullTextIndex (ну как PutInFolder, скажем :-) Т.е., сохранил док-т, тут же (синхронно) его включил в поиск.
NickProstoNick, вот-вот - у БАЗЫ-то есть метод, у ДОКУМЕНТА нет. Это значит, что процесс пройдется по базе, отберет коллекцию новых/измененных документов и будет их индексировать, но фиг знает в каком порядке и с каким приоритетом... Не случайно обычная переиндексация видов как бы состоит из 3-х подсистем...
ЗЫ. В принципе, Update и потом сразу Select было бы неплохо, но... не наши это методы, не лотусовые...
 
susinmn, подозреваю, что полнотекстовое индексирование все-таки задумывалось как неспешная, фоновая задача.
Иначе наверняка существовал бы метод у NotesDocument типа PutInFullTextIndex (ну как PutInFolder, скажем :-) Т.е., сохранил док-т, тут же (синхронно) его включил в поиск.
Ну у базы данных есть принудительное обновление индекса
JavaScript:
if (database.isFTIndexed()) {
database.updateFTIndex(false)
} else {
database.createFTIndex(0, true)
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Популярные темы

Курс AD