IBSurgeon / lucene_udr

Lucene FTS UDR
51 stars 6 forks source link

Search does not work for text longer than a certain length #13

Closed AlexBekhtin closed 3 months ago

AlexBekhtin commented 4 months ago
recreate table test_data(
  id   int not null primary key,
  text blob sub_type text
);

insert into test_data(id)
values (1);

execute procedure fts$management.fts$create_index('TEST_DATA#TEXT', 'TEST_DATA', 'STANDARD', 'ID');
execute procedure fts$management.fts$add_index_field('TEST_DATA#TEXT','TEXT');

create or alter procedure generate_serial (
    from_value integer,
    to_value   integer,
    step       integer = 1)
returns (
    id integer)
as
begin
  id = from_value;
  while (id <= to_value) do
  begin
    suspend;
    id = id + step;
  end
end

update test_data set
 text = (select list(s.id, ' ') || ' special text' from generate_serial(1,1000) s)
where id = 1;

execute procedure fts$management.fts$rebuild_index('TEST_DATA#TEXT');

select * from fts$search('TEST_DATA#TEXT', 'special text', 20000);

-- 1 record returned

update test_data set
 text = (select list(s.id, ' ') || ' special text' from generate_serial(1,10000) s)
where id = 1;

execute procedure fts$management.fts$rebuild_index('TEST_DATA#TEXT');

select * from fts$search('TEST_DATA#TEXT', 'special text', 20000);

-- no record

Firebird-5.0.0.1306-0-windows-x64 database and connection charset: WIN1251 lucene_version: 3.0.9