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

Тема в разделе "Lotus - Программирование", создана пользователем doc, 22 янв 2010.

  1. doc

    doc Гость

    Можно ли как-нибудь программно получить свойсва индекса базы данных. Я знаю что есть свойство 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 почтовых баз и если он отличается от требуемых настроек илии вообще отсутсвует, то создать его.
    Как это можно реализовать?
     
  2. allex

    allex Гость

    На базе этого примера взять переменные 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">
    Код (Text):
    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();
    }
    }
    }
     
  3. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    в этом коде пересоздается в любом случае...
    а как-то считать настройки и проверить вариант: "если он отличается от требуемых настроек" ?
    смотреть в сторону DXL/API?

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

    doc Гость

    Этот пример кода из хелпа по лотусу.
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Посмотрел СиАПИ. Аналогично — прочитать установленные параметры фт-индекса функций нет.
     
  6. allex

    allex Гость

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

    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">[​IMG]

    <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
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    ой ли? просили не узнать значения числовых констант, описывающих свойства, а помочь в решении задачи (какие свойства узнать, Вы указали правильно):
    сейчас вижу код создания (если нет) или пересоздания с параметрами (если есть) фт-индекса и вывода констант, которые можно использовать при задании фт-индекса.
    не обижайтесь, но код получения и сравнения текущих Index Settings для БД с фт-индексом, отображаемых на закладке Full text св-в БД, я не вижу...
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Может эта информация хранится в к-либо поле дизайн-документа Icon? Например, $Flags - вполне подходящая кандидатура.
     
  9. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    возможно. но что попадалось ранее на глаза про $Flags в Icon - именно изменения свойств БД в ней Is there a way to programmatically change Database Properties for a database? (+это же по-русски), а про фт не видела.
    Вот Нотеспик выдает только факт индексирования, без детализации: (в Db info) options FTIndex
     
  10. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Где-то Лотус должен хранить информацию об индексе, по крайней мере в свойствах базы данных эта информация отображается. Может это пишется в к-либо документ служебной БД сервера, а не в саму базу?

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

    doc Гость

    Да спасибо за информацию!
     
Загрузка...

Поделиться этой страницей