2013-12-10 2 views
0

У меня есть БД, который должен быть полный текст индексируются, так что я добавил код ниже, чтобы создать один, если он не Allready индексируются:XPages создать полнотекстовый индекс в SSJS

if (database.isFTIndexed()){ 
    database.updateFTIndex(false) 
} else { 
    var options:int = database.FTINDEX_ALL_BREAKS + database.FTINDEX_ATTACHED_FILES + database.FTINDEX_IMMEDIATE 
    database.createFTIndex(options , true); 
    database.updateFTIndex(false); 
} 
sessionScope.put("ssSelectedView","vwWFSProfile") 

Когда он работает я следующее сообщение об ошибке: источник ошибки страницу: /xpWFSAdmin.xsp Id управления: button2 недвижимости: OnClick

Исключение ошибка при выполнении выражения действия JavaScript com.ibm.jscript.types.GeneratedWrapperObject $ StaticFiel д несовместима с com.ibm.jscript.types.FBSValue

Expression

1: # {JavaScript: если (database.isFTIndexed()) { 2: database.updateFTIndex (ложь) 3:} еще { 4: var options: int = database.FTINDEX_ALL_BREAKS + database.FTINDEX_ATTACHED_FILES + database.FTINDEX_IMMEDIATE 5: database.createFTIndex (опции, true); 6: database.updateFTIndex (false); 7:} 8: sessionScope.put ("ssSelectedView", "vwWFSProfile")}

Он удушье в строке 4 не нравится суммирование параметров. Поэтому я закомментируйте строки 4 и измените строку 5 читать database.createFTIndex (4, правда) тогда я получаю эту ошибку:

Ошибка при выполнении выражения действия JavaScript Script ошибка переводчика, строка = 5, цв = 18: [TypeError] Исключение произошло вызова метода NotesDatabase.createFTIndex (число, булево) нуль

JavaScript код

1: если (database.isFTIndexed()) { 2: database.updateFTIndex (ложь) 3:} else { 4: // параметры var: int = database.FTINDEX_ALL_BREAKS + database.FTINDEX_ATTACHED_FILES + database.FTINDEX_IMMEDIATE 5: database.createFTIndex (4, true); 6: database.updateFTIndex (false); 7:} 8: sessionScope.put ("ssSelectedView", "vwWFSProfile")

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

ответ

3

Насколько я могу прочитать из справки, вы не можете использовать database.FTINDEX_IMMEDIATE как параметр для createFTIndex() только для setFTIndexFrequency().

Так удалить использование database.FTINDEX_IMMEDIATE и сделать это:

var options:int = database.FTINDEX_ALL_BREAKS + database.FTINDEX_ATTACHED_FILES; 
database.createFTIndex(options , true); 

Вы можете позвонить setFTIndexFrequency(), как это:

database.setFTIndexFrequency(database.FTINDEX_IMMEDIATE); 
+0

будет попробовать. У меня был единственный фрагмент кода, в котором я установилFTIndexFrequency в Immediate, не понимая, что его нельзя использовать в настройках. Теперь, когда я смотрю на Справку, которую я упустил, проблема Immediate не может быть названа в качестве опции. Это не совсем очевидно, но оно есть. Спасибо –

+0

Я немного по-настоящему запутался. Я создал простой XPage с помощью одной кнопки и этого кода:
if (database.isFTIndexed()) { \t database.updateFTIndex (false) } else { \t database.createFTIndex (0, false); \t database.setFTIndexFrequency (4); \t database.updateFTIndex (false); }
Если Irun это на копии локальной копии, он отлично работает. Если я попытаюсь запустить его на копии сервера, я получаю ошибку 500, и индекс не создается. попробовал использовать database.FTINDEX_ALL_BREAKS, и он терпел неудачу все время, поэтому просто добавил числа. Мне нужно немного отойти от этого, я так расстроен. –

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