Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / индексация русских текстов / 11 сообщений из 11, страница 1 из 1
03.06.2008, 10:38
    #35350550
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
Вопрос по %Text.Russian

БД - Cache 2008.1.0.401.0 Unicode

Подскажите если кто работал с этим классом:
В описании класса написано, что он работает и с Unicode версией Cache.
Не индексируются файлы в кодировке utf-16, если ручками конвертировать файл utf16->cp1251, то файл индексируется.
Можно как-нибудь решить эту проблему ( индексировать файлы без перекодировки utf16->cp1251 )
...
Рейтинг: 0 / 0
03.06.2008, 11:13
    #35350667
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
У меня все работает.
Cache for Windows (x86-32) 2008.2 (Build 420U) Thu May 15 2008 12:46:24 EDT

Какая у Вас локаль по умолчанию и что стоит в "New Global Collation" у баз данных?
У меня своя локаль на основе rusw и у всех БД стоит "Cache standard".
...
Рейтинг: 0 / 0
03.06.2008, 11:35
    #35350730
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
Класс напрямую с файлами не работает и перекодировок не выполняет. В нем предполагается, что данные хранятся в кодировке, родной для вашей установки Каше, т.е. в Вашем случае - UTF-16.
Вы, наверное, воспользовались примером (morpho.mac):
Код: plaintext
1.
2.
3.
4.
5.
...
ftpar(file) ; read per paragraph (myMAXLEN max size) ; global bc
 n line1
 c file o file:("RK\CP1251\"): 0  e  q "0~not opened"
 ...
Исправьте "CP1251" на "RAW" или "UnicodeLittle" или что там у Вас :)
...
Рейтинг: 0 / 0
03.06.2008, 13:56
    #35351280
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
servit
У меня своя локаль на основе rusw и у всех БД стоит "Cache standard".
В "New Global Collation" стоит "Сyrilic1". Какие изменения Вы внесли в новую локаль?

Alexey Maslov
Пробовал ставить вместо CP1251 Unicode (когда загружал юникодный файл), индекс все равно не создается.
...
Рейтинг: 0 / 0
03.06.2008, 14:17
    #35351338
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
У меня в локали изменения касаются только поддержки молдавского языка и поддержки unicode для формирования XML ClientDataSet в Delphi, все остальное - как в rusw.

Если просто посмотреть загруженный текст в таблице, он нормально отображается (чтобы отмести ошибки конвертации при чтении файла)?

PS: и, если можно, приложите небольшой файл с данными, с которыми проблема.
...
Рейтинг: 0 / 0
03.06.2008, 15:55
    #35351664
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
LeronПробовал ставить вместо CP1251 UnicodeТакой таблицы нет. В локали RUS8 есть UnicodeLittle, UnicodeBig, UTF8. Но я бы начал с RAW (если на входе файл с Виндовым юникодом):
Код: plaintext
... o file:("RK\RAW\") ...
И, как Вам посоветовал Servit, проконтролировал бы для начала чтение файла (в глобал бы его прочел и вывел этот глобал на терминал/просмотрел в Портале, например).
...
Рейтинг: 0 / 0
04.06.2008, 17:50
    #35354820
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
Нашел ошибку: после перехода БД на юникод забыл поменять в коде программы (написана на с++) вызовы CachePushStr (с помощью ее я передаю в каше текст для индексации) на CachePushStrW.

Alexey Maslov
В моей каше стоит локаль rusw.
В том примере morpho.mac пробовал как Вы сказали менять на RAW :
Код: plaintext
... o file:("RK\RAW\") ...
в терминале считанный текст отображается корректно только когда ставлю вместо RAW Unicode .

Спасибо за помощь!
...
Рейтинг: 0 / 0
04.06.2008, 18:05
    #35354859
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
А можно как нибудь в каше не хранить текст, который индексируется, т.е. самому ручками создавать индекс, работая напрямую с глобалами. У меня не получилось, не хочет искать по такому индексу. В Портале в плане запроса поиска по тексту увидел, что зачем то происходит опреация %SQLUPPER(MyText) (точно план запроса не помню), зачем ему нужен мой текст, ведь поиск идет только по индексу.
...
Рейтинг: 0 / 0
05.06.2008, 12:08
    #35356106
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
Насколько я помню, хранимый текст приводится к %SQLUPPER, если используется предикат %CONTAINS. По-возможности надо стараться использовать %CONTAINSTERM, об этом даже сказано в 1readme.htm. LeronА можно как нибудь в каше не хранить текст, который индексируется, т.е. самому ручками создавать индекс, работая напрямую с глобалами.Не совсем понятно, чего Вы хотите. Примерчик (упрощенный) привели бы...
...
Рейтинг: 0 / 0
06.06.2008, 14:27
    #35359503
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
Пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
s text="текст, который нужно проиндексировать"
k varr do ##class(%Text.Russian).BuildValueArray(text,.varr)			
s word = $o(varr(""))
while word '= "" {
  s $bit(^BAG.RussianTextI("TextIndex",$zu( 28 ,word, 7 , 32768 ),pidchunk),pidoffset)= 1 
  s word = $o(varr(word))
}
сгенерироваля индекс, теперь нам текст не нужен, но нужно, чтобы работал поиск по словам.
...
Рейтинг: 0 / 0
06.06.2008, 15:05
    #35359647
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
индексация русских текстов
Вроде понял, но не уверен. Вы хотели бы хранить только индекс, не храня сам текст? Но ведь индекс (устроенный по типу битмаповского) ориентирован на стандартное хранение Cache, которое не предусматривает хранения данных в битмаповских индексах. Поэтому поиск через SQL у вас не пойдет. Но ничто не мешает реализовать его на прямом доступе.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / индексация русских текстов / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]