проблемка с Notesdatabase.ftsearch

  • Автор темы Sandr
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Sandr

Гость
#1
При реализации поиска для одной базки, наткнулся на одну проблемку. Не работает поиск по диапазону дат в который1 попадает значение одного поля типа "дата". FTSearch воспринимает поле как текстовое и не дает использовать операции сравнения “>”, “<”, “<=” и “>=”.

Прибить индекс и создать его заново не помогает. Может, уже кто-то сталкивался с подобной проблемой и знает, как легко её обойти…

Я знаю один способ, но мне он не очень подходит... грубо говоря не подходит совсем...
 
M

Mihal

Гость
#2
Уси-пуси :). Как бальзам на душу!:D Проблемки у конкурентов! Мелочь, а приятно! :P

Удостоверся что нигде в формах нету поля с таким же именем, но текстовым. А вдруг?

P.S. и выдай текст запроса который ты пытаешься впихануть.
 
S

Sandr

Гость
#3
Мишань, проблема именно в том, что пока поле пустое - оно текстовое... а када индекс формируется первый раз, он же ж не смотрит все документы.. он нашел первый попавшийся, посмотрел, шо поле текстовое (пустое патамуша) и зафигачил в свою таблицу тот факт, шо оно текстовое... А как эту заразу переубедить - ХЗ... Есть способ - создать реплику и индекс для неё, авось в ней полу будет уже датой... А потом подменить базку репликой - но способ настока брутальный, шо даже не хочу это делать... Ищу способы покрасивей.. А ты, вместо того, шоб радоватся проблемкой у конкурентов (кстати не у них проблемка.. а у меня :)) - помог бы коллеге...

запрос до безобразия простой...

( [Form]= "Form1") & ([Date1] >= 27.09.2007) & ([Date1] <= 28.09.2007)
 

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#4
<!--QuoteBegin-Sandr+6:11:2007, 13:43 -->
<span class="vbquote">(Sandr @ 6:11:2007, 13:43 )</span><!--QuoteEBegin-->(пустое патамуша)
[snapback]84413" rel="nofollow" target="_blank[/snapback]​
[/quote]
па рукам за такое )
 
S

Sandr

Гость
#5
за какое? Так а шо делать, если оно и должно быть пустым, пока его не завполнят... Оно не обязательно на определенных стадиях...
 
M

Mihal

Гость
#6
Заполнять @now али @today. И флажок рядышком завести. Флажок взведён - значит на дату нада обращать внимание, флажок опущен - значит на дату забить.
 
S

Sandr

Гость
#7
Клиент, к сожалению, не поймет причины такого неудобства в интерфейсе...
 

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#8
Значит далать второ поле которое будет отобрадаться - а то по которому будт искать - будет скрытым и т.д.
 
S

Sandr

Гость
#9
Если бы база писалась с нуля, то так и сделал бы.. но ведь она уже существует... :)
 
S

Sandr

Гость
#11
Причем тут шаблоны? Предлагаете создать новую БД? База уже в работе, коиент пользуется - как исправить?
 

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#12
Зачем создавать новую БД ... разве у Вас шаблонов по которм создавались БД не осталося?
прописать просто поле которое надо для поиска -скрытым(Поле1) , а новое поле зделать видимым(Поле2)

Поле 1 = если поле1 и поле2 пусто будет принимать значение 1900/01/01.
ну соответсвено поле2 = пусто( если поле1 - 1900/01/01 ), либо равно поле1

ну чтото в этом роде
 
S

Sandr

Гость
#13
Да поймите, не в этом проблема, а проблема в том, что в существующей базе этим проблему не решишь... Проблема возникла при ПЕРВОМ создании индекса... Поменять поля - это тоже самое, что махать кулаками после боя...

ЗЫ: По-вашему, я что, не в состоянии поля сделать? :)
 

morpheus

скриптописец
07.08.2006
3 915
1
34
Украина, Киев
#14
ну тады звыняйте, о любые пустые поля будут восприниматься как текстовые пустышки

по этому я и не пользуюсь FTSearch - это зло
 

Constantin A Chervonenko

Well-Known Member
Lotus team
#15
Если бы база писалась с нуля, то так и сделал бы.. но ведь она уже существует... :)
Убить индекс; Натравить на неё агентец такого толка:
Код:
SELECT @Elements(поле)=0;
FIELD поле:=@DeleteField
Создать индекс
 
S

Sandr

Гость
#17
так.. как я понял, никто не понял основной сути проблемы...

Ну что толку от этого всего? Как это повлияет на определения типа поля в индексе? Он ведь определяется при ПЕРВОМ построении индекса... Даже если прибить все, индекс и все документы в БД, а потом создать один документ с заполенным полем даты и заново создать индекс - проблема останется... :D

Единственный выход - создать реплику существующей базы, проследить корректность заполенныз полей в ней, создать индекс и подменить базу этой репликой...
 

Constantin A Chervonenko

Well-Known Member
Lotus team
#18
Это вы ничего не поняли.

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

Если в вашей базе данное поле ТОЛЬКО датовского типа ЛИБО пустое, то агентик поможет, поиск будет работать.
 
I

IsAvailable

Гость
#19
Для: Sandr
После отработки агента индекс пересоздать...
Или база недосягаема? Тогда как вообще о каких-то изменениях говорить? =\
 
S

Sandr

Гость
#20
Это вы ничего не поняли.

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

Если в вашей базе данное поле ТОЛЬКО датовского типа ЛИБО пустое, то агентик поможет, поиск будет работать.
Ну что толку? База не кривая.. все поля типа Дата или пустые. Тип поля в индексе определен как текст, а определяется он при ПЕРВОМ создании индекса... Он криво создался в первый раз - все его не переубедить, что поле не текстовое... Прибить индек и создать его заново - результата не дает... Я же говорил это выше... Помогает тока если создать реплику, создать в ней индекс, а птом подсунуть реплику вместо базы...
 
Статус
Закрыто для дальнейших ответов.