@myphpscript

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

Приветствую. Подскажите, пожалуйста, по сабжу.
Есть полнотекстовый поиск по инфостраницам, в которых встречаются модели товаров, например DG1875, DG1885 и тп.
Как сделать, что бы при вводе числовой части, страницы попадали в выборку. В мануале накурил только поиск по префиксу to_tsquery('prefix:*'). Не тыкать же like в where:)
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 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
    Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы