@myphpscript

Postgresql полнотекстовый поиск + поиск по модели товаров?

Приветствую. Подскажите, пожалуйста, по сабжу.
Есть полнотекстовый поиск по инфостраницам, в которых встречаются модели товаров, например DG1875, DG1885 и тп.
Как сделать, что бы при вводе числовой части, страницы попадали в выборку. В мануале накурил только поиск по префиксу to_tsquery('prefix:*'). Не тыкать же like в where:)
  • Вопрос задан
  • 182 просмотра
Пригласить эксперта
Ответы на вопрос 1
select_artur
@select_artur
C разработчик
У вас префиксы фиксированной длины? Если да, то можно попробовать такой способ. В индекс можно класть только цифровую часть:
=# create table test (t text);
=# insert into test values ('DG1875'),('DG1885');
=# create index on test (cast(substr(t, 3) as int));
=# select * from test where cast(substr(t, 3) as int) = 1875;
   t    
--------
 DG1875
=# explain analyze select * from test where cast(substr(t, 3) as int) = 1875;
                                                       QUERY PLAN                                                       
------------------------------------------------------------------------------------------------------------------------
 Index Scan using test_substr_idx1 on test  (cost=0.13..8.14 rows=1 width=32) (actual time=0.020..0.021 rows=1 loops=1)
   Index Cond: ((substr(t, 3))::integer = 1875)
 Planning time: 0.142 ms
 Execution time: 0.057 ms

Если переменной длины, то можно удалять префикс с помощью ltrim:
=# select ltrim('ABC1875', 'ABC');
 ltrim
-------
 1875
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы