Этот вопрос использует Microsoft Службы индексирования ( Диалект 2 ) и Интерфейс IixssoQuery из библиотеки взаимодействия Cisso.dll из программы на C # / .NET.
В нашем индексе есть столбцы, определенные как тип данных vt_i8
(8 байт), однако метод CreateRecordSet
библиотеки взаимодействия всегда возвращает RecordSetс числовыми столбцами из 4-х байтовых целых, усекающими все, что превышает предел диапазона в 2 147 483 648.
В идеале нам нужно извлечь C # long
System.Int64 (8 байт) вместо C # int
System.Int32 (4 байт) из библиотеки взаимодействия.
Следующий пример кода(в основном предоставляется для пробежек) использует Cisso.dll для получения набора записей и заполнения DataTable, возвращая данные с усеченными целыми числами.
CissoQueryClass cqc = new Cisso.CissoQueryClass();
RecordSet rs = new RecordSet();
cqc.Columns = "Rank, DocTitle, VPath, Filename, Characterization,Write";
// ... setup ...
var myDs = new DataSet();
oldDbAdapter.Fill(myDs, cqc.CreateRecordSet("nonsequential"), "IXResults");
return myDs;
Мы попробовали cqc. DefineColumn(..)
метод, игра с типами данных и т. Д., Но безрезультатно - не наблюдается никаких изменений в поведении усеченных целых чисел.
Я хочу знать, является ли это целочисленное усечение ограничением библиотеки взаимодействия CISSO или можно извлечь из него большие целочисленные значения, а мы просто не знаем, как это сделать?
Я уверен, что кто-то здесь столкнулся с подобной проблемой.Поиск в интернете на этот раз очень мал по деталям.
Мы нашли обходной путь, основанный на данных внутри индекса: мы можем извлечь то, что нам нужно, из другого строкового поля и проанализировать число из него.Не идеальный, но обходной путь.