powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / tsearch2 - слово вне словаря
6 сообщений из 6, страница 1 из 1
tsearch2 - слово вне словаря
    #35539703
sourcer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим я есть таблица и в ней есть запись "кухонный комбайн KHR-700 мощьность 20 ват"

Еслия делаю запрос
SELECT * FROM mytest WHERE fts_title @@ to_tsquery('mydict_ru','KHR-700');

то мне естветсвенно ничего не выдатся.

Как сделать так что бы tsearch умел находить подобные слова которых нет в словаре?
...
Рейтинг: 0 / 0
tsearch2 - слово вне словаря
    #35540070
sourcer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ктонибудь помогите решить задачку... плиз...
...
Рейтинг: 0 / 0
tsearch2 - слово вне словаря
    #35540090
sourcer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я конечно вижу решение но все же мне надо понять каким путем правильно идти.

Ну допустим все чего нет в словарях то и не ищится, хорошо. Тогда предположив что мой сайт это сайт определенной тематики и у меня есть статстика слов которы наиболее часто ищат, я из этой статистики могу пополнять словарь... тоесть если часто встречаются слова AUDI и их вводили более чем 1000 раз то я действительно мог бы добавить его в словарь. Правильно ли это, сам подход?
Но! Допустим что теоритически это правильно, но что делать с такими фразами как AUDI A6. Тоесть если в словарь и уйдет слово AUDI то A6 я врядли туда добавлю так как слово из 2х букв, это очень накладно, либо же надо более сложный анализ статистики запросов делать где учитывать наиболее частые и комбинации слов.

Как быть подскажите?
...
Рейтинг: 0 / 0
tsearch2 - слово вне словаря
    #35540128
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sourcerто мне естветсвенно ничего не выдатся.почему "естественно" ? у меня - выдаётся :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
seb=> select * from p where f @@ plainto_tsquery('russian', 'KHR-700');
                     v                     |                                   f
-------------------------------------------+-----------------------------------------------------------------------
 кухонный комбайн KHR- 700  мощьность  20  ват | '20': 6  'khr': 3  '-700': 4  'ват': 7  'комбайн': 2  'кухонный': 1  'мощьност': 5 
( 1  запись)

Время:  0 , 597  мс
seb=> \dF+ russian
Text search configuration "pg_catalog.russian"
Parser: "pg_catalog.default"
      Token      |        Dictionaries
-----------------+-----------------------------
 asciihword      | english_stem
 asciiword       | english_stem
 email           | simple
 file            | simple
 float           | simple
 host            | simple
 hword           | russian_ispell,russian_stem
 hword_asciipart | english_stem
 hword_numpart   | simple
 hword_part      | russian_ispell,russian_stem
 int             | simple
 numhword        | simple
 numword         | simple
 sfloat          | simple
 uint            | simple
 url             | simple
 url_path        | simple
 version         | simple
 word            | russian_ispell,russian_stem
...
Рейтинг: 0 / 0
tsearch2 - слово вне словаря
    #35540269
sourcer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
select * from mytest where fts_title @@ plainto_tsquery('russian', 'KHR-700');

на выходе ноль... подскажите почему так?

mydb=# \dF+ russian
Text search configuration "pg_catalog.russian"
Parser: "pg_catalog.default"
      Token      | Dictionaries
-----------------+--------------
 asciihword      | english_stem
 asciiword       | english_stem
 email           | simple
 file            | simple
 float           | simple
 host            | simple
 hword           | russian_stem
 hword_asciipart | english_stem
 hword_numpart   | simple
 hword_part      | russian_stem
 int             | simple
 numhword        | simple
 numword         | simple
 sfloat          | simple
 uint            | simple
 url             | simple
 url_path        | simple
 version         | simple
 word            | russian_stem

почему так ? тут даже не в словарях помоему дело а в генерации вектора
после генерации вот что выходит в таблице, в нее не попадают слова которые вне словаря:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
av=# SELECT * FROM mytest;
 id |                   title                   |             short_description             |            fts_title            |       fts_short_description  
----+-------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------
   1  | продам машину                             | дорого продам машину                      | 'машина': 2  'продать': 1           | 'машина': 3  'дорогой': 1  'продать': 2 
   2  | продам кошку                              | дорого продам кота                        | 'кошка': 2  'продать': 1            | 'кот': 3  'дорогой': 1  'продать': 2 
   3  | продам кота перситского                   | котик                                     | 'кот': 2  'продать': 1              | 'котик': 1 
   4  | продам дорогого кота                      | кошка                                     | 'кот': 3  'дорогой': 2  'продать': 1  | 'кошка': 1 
   7  | кухонный комбайн KHR- 700  мощьность  20  ват | кухонный комбайн KHR- 700  мощьность  20  ват | 'комбайн': 2  'кухонный': 1         |
   5  | аппарат HRF- 70  купить                     | газовое оборудовние                       | 'купить': 2  'аппарат': 1           | 'газовый': 1 
   6  | auto cars                                 | газовое оборудовние                       | 'car': 2  'auto': 1                 | 'газовый': 1 
( 7  rows)
...
Рейтинг: 0 / 0
tsearch2 - слово вне словаря
    #35540556
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй функцию ts_debug и сравни с to_tsquery. Внизу привел стандартный способ дебугирования, запомните его !

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
postgres=# select * from ts_debug('english','KHR-70');
   alias   |   description   | token |  dictionaries  |  dictionary  | lexemes 
-----------+-----------------+-------+----------------+--------------+---------
 asciiword | Word, all ASCII | KHR   | {english_stem} | english_stem | {khr}
 int       | Signed integer  | - 70    | {simple}       | simple       | {- 70 }
( 2  rows)
postgres=# select to_tsquery('russian','KHR-70');
  to_tsquery   
---------------
 'khr' & '-70'
( 1  row)
postgres=# select to_tsvector('russian','KHR-70') @@ to_tsquery('russian','KHR-70');
 ?column? 
----------
 t
( 1  row)

sourcer
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
select * from mytest where fts_title @@ plainto_tsquery('russian', 'KHR-700');

на выходе ноль... подскажите почему так?

mydb=# \dF+ russian
Text search configuration "pg_catalog.russian"
Parser: "pg_catalog.default"
      Token      | Dictionaries
-----------------+--------------
 asciihword      | english_stem
 asciiword       | english_stem
 email           | simple
 file            | simple
 float           | simple
 host            | simple
 hword           | russian_stem
 hword_asciipart | english_stem
 hword_numpart   | simple
 hword_part      | russian_stem
 int             | simple
 numhword        | simple
 numword         | simple
 sfloat          | simple
 uint            | simple
 url             | simple
 url_path        | simple
 version         | simple
 word            | russian_stem

почему так ? тут даже не в словарях помоему дело а в генерации вектора
после генерации вот что выходит в таблице, в нее не попадают слова которые вне словаря:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
av=# SELECT * FROM mytest;
 id |                   title                   |             short_description             |            fts_title            |       fts_short_description  
----+-------------------------------------------+-------------------------------------------+---------------------------------+------------------------------------
   1  | продам машину                             | дорого продам машину                      | 'машина': 2  'продать': 1           | 'машина': 3  'дорогой': 1  'продать': 2 
   2  | продам кошку                              | дорого продам кота                        | 'кошка': 2  'продать': 1            | 'кот': 3  'дорогой': 1  'продать': 2 
   3  | продам кота перситского                   | котик                                     | 'кот': 2  'продать': 1              | 'котик': 1 
   4  | продам дорогого кота                      | кошка                                     | 'кот': 3  'дорогой': 2  'продать': 1  | 'кошка': 1 
   7  | кухонный комбайн KHR- 700  мощьность  20  ват | кухонный комбайн KHR- 700  мощьность  20  ват | 'комбайн': 2  'кухонный': 1         |
   5  | аппарат HRF- 70  купить                     | газовое оборудовние                       | 'купить': 2  'аппарат': 1           | 'газовый': 1 
   6  | auto cars                                 | газовое оборудовние                       | 'car': 2  'auto': 1                 | 'газовый': 1 
( 7  rows)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / tsearch2 - слово вне словаря
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]