Индекс базы данных

  • Автор темы doc
  • Дата начала
D
#1
Можно ли как-нибудь программно получить свойсва индекса базы данных. Я знаю что есть свойство NotesDatabase.FTIndexFrequency, но мне нужны еще те опции которые можно описывать при создании этого индекса методом NotesDatabase.createFTIndex()

FTINDEX_ALL_BREAKS (4) to index sentence and paragraph breaks
FTINDEX_ATTACHED_BIN_FILES (16) to index attached files (binary)
FTINDEX_ATTACHED_FILES (1) to index attached files (raw text)
FTINDEX_CASE_SENSITIVE (8) to enable case-sensitive searches
FTINDEX_ENCRYPTED_FIELDS (2) to index encrypted fields

Задача вообще состоит в том, чтобы проверить текущий индекс порядка 1000 почтовых баз и если он отличается от требуемых настроек илии вообще отсутсвует, то создать его.
Как это можно реализовать?
 
A

allex

#2
На базе этого примера взять переменные Database.FTINDEX_ALL_BREAKS ...
и по ним проверить

На Lotusscript таких свойств нет

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Пример кода</div></div><div class="sp-body"><div class="sp-content">
Код:
import lotus.domino.*;

public class JavaAgent extends AgentBase {

public void NotesMain() {

try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();

// (Your code goes here) 
Database db = agentContext.getCurrentDatabase();
int options = Database.FTINDEX_ALL_BREAKS +
Database.FTINDEX_CASE_SENSITIVE;
if (db.isFTIndexed())
{
db.createFTIndex(options, true);
System.out.println("Database index recreated");
}
else
{
db.createFTIndex(options, false);
System.out.println("New database index created");
}

} catch(Exception e) {
e.printStackTrace();
}
}
}
 

hosm

* so what *
18.05.2009
2 442
6
#3
в этом коде пересоздается в любом случае...
а как-то считать настройки и проверить вариант: "если он отличается от требуемых настроек" ?
смотреть в сторону DXL/API?

Добавлено:
На базе этого примера взять переменные Database.FTINDEX_ALL_BREAKS ...
и по ним проверить

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

nvyush

Lotus team
22.04.2009
2 317
0
#5
Посмотрел СиАПИ. Аналогично — прочитать установленные параметры фт-индекса функций нет.
 
A

allex

#6
Дописать вот этот кусок и получим результат

System.out.println(Database.FTINDEX_ALL_BREAKS);


<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Вот пример работы</div></div><div class="sp-body"><div class="sp-content">


<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Вот то что присили</div></div><div class="sp-body"><div class="sp-content">http://img6.imageshack.us/img6/3664/ft1c.jpg
 

hosm

* so what *
18.05.2009
2 442
6
#7
ой ли? просили не узнать значения числовых констант, описывающих свойства, а помочь в решении задачи (какие свойства узнать, Вы указали правильно):
Можно ли как-нибудь программно получить свойсва индекса базы данных.
...
Задача вообще состоит в том, чтобы проверить текущий индекс порядка 1000 почтовых баз и если он отличается от требуемых настроек или вообще отсутствует, то создать его.
сейчас вижу код создания (если нет) или пересоздания с параметрами (если есть) фт-индекса и вывода констант, которые можно использовать при задании фт-индекса.
не обижайтесь, но код получения и сравнения текущих Index Settings для БД с фт-индексом, отображаемых на закладке Full text св-в БД, я не вижу...
 

nvyush

Lotus team
22.04.2009
2 317
0
#8
Может эта информация хранится в к-либо поле дизайн-документа Icon? Например, $Flags - вполне подходящая кандидатура.
 

hosm

* so what *
18.05.2009
2 442
6
#9
возможно. но что попадалось ранее на глаза про $Flags в Icon - именно изменения свойств БД в ней Is there a way to programmatically change Database Properties for a database? (+это же по-русски), а про фт не видела.
Вот Нотеспик выдает только факт индексирования, без детализации: (в Db info) options FTIndex
 

nvyush

Lotus team
22.04.2009
2 317
0
#10
Где-то Лотус должен хранить информацию об индексе, по крайней мере в свойствах базы данных эта информация отображается. Может это пишется в к-либо документ служебной БД сервера, а не в саму базу?

Добавлено
Поэкспериментировал с локальной базой в части добавления/удаления индекса и его параметров, контролируя дату/время изменения файлов. При добавлении индекса дата изменения файла БД не изменялась, но добавлялась папка с именем <имя БД>.ft с кучей файлов. Самому анализировать лень, но может топикстартеру данная инфа поможет.