Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
при экспериментах с полнотекстовым поиском я заметил, что не все нужные слова распознаются как стоп-слова. например слова: "какой", "какая" считаются стоп-словами, а "какие" -- почему то нет.
Нашел место хранения русских стоп-слов /usr/pgsql/share/tsearch_data/russian.stop
добавил в этот файл нужные слова. А как теперь применить изменения, чтобы это при при поиске учитыалось?
20 мар 17, 12:55    [20313556]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
а еще вот пример:
db=# SELECT * FROM ts_debug('нужно');
 alias |    description    | token |         dictionaries         |  dictionary  | lexemes 
-------+-------------------+-------+------------------------------+--------------+---------
 word  | Word, all letters | нужно | {my_synonym,russian_stem} | russian_stem | {нужн}
(1 строка)

db=# SELECT * FROM ts_debug('нужен');
 alias |    description    | token |         dictionaries         |  dictionary  | lexemes 
-------+-------------------+-------+------------------------------+--------------+---------
 word  | Word, all letters | нужен | {my_synonym,russian_stem} | russian_stem | {нуж}
(1 строка)

"нужно" и "нужен" -- это разве разные слова? а как сделать, чтобы они одинаково распознавались?
20 мар 17, 14:31    [20314049]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Ролг Хупин
Member

Откуда: Оттуда
Сообщений: 915
Лебедкин
а еще вот пример:
db=# SELECT * FROM ts_debug('нужно');
 alias |    description    | token |         dictionaries         |  dictionary  | lexemes 
-------+-------------------+-------+------------------------------+--------------+---------
 word  | Word, all letters | нужно | {my_synonym,russian_stem} | russian_stem | {нужн}
(1 строка)

db=# SELECT * FROM ts_debug('нужен');
 alias |    description    | token |         dictionaries         |  dictionary  | lexemes 
-------+-------------------+-------+------------------------------+--------------+---------
 word  | Word, all letters | нужен | {my_synonym,russian_stem} | russian_stem | {нуж}
(1 строка)

"нужно" и "нужен" -- это разве разные слова? а как сделать, чтобы они одинаково распознавались?


Здесь была моя тема уже несколько месяцев назад, но никто не смог объяснить как настраивать FTS каталоги и индексы для индексирования и поска форм слов.

В вашем случае - разные.

Что будет если так?

SELECT * FROM ts_debug('нужный');
SELECT * FROM ts_debug('нужник');
20 мар 17, 14:37    [20314076]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
Ролг Хупин
SELECT * FROM ts_debug('нужный');
SELECT * FROM ts_debug('нужник');

нужн
нужник
20 мар 17, 14:44    [20314108]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
да. видимо, с такой штукой, как текстовый поиск с учетом русской морфологии, у нас только в яндексе профессионально работают :)
20 мар 17, 14:50    [20314128]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Ролг Хупин
Member

Откуда: Оттуда
Сообщений: 915
Лебедкин
да. видимо, с такой штукой, как текстовый поиск с учетом русской морфологии, у нас только в яндексе профессионально работают :)


даладно


всё решаемо, нужны правильно настроенные словари
20 мар 17, 16:13    [20314559]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
ну в этом то и вопрос, кто бы мог объяснить, как словари настроить

я здесь всё прочитал https://postgrespro.ru/docs/postgresql/9.6/textsearch.html
но на возникшие на практике вопросы там решений не нашел.
20 мар 17, 17:01    [20314869]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Ролг Хупин
Member

Откуда: Оттуда
Сообщений: 915
Лебедкин
ну в этом то и вопрос, кто бы мог объяснить, как словари настроить

я здесь всё прочитал https://postgrespro.ru/docs/postgresql/9.6/textsearch.html
но на возникшие на практике вопросы там решений не нашел.


да, вот я спрашивал то же

http://www.sql.ru/forum/1240321/vopros-po-full-text-search

Здесь раньше бывал Бартунов, что-то подсказывал, но сейчас он не занимается этим.
20 мар 17, 17:26    [20314960]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
qwwq
Member

Откуда:
Сообщений: 2037
Ролг Хупин
Здесь раньше бывал Бартунов, что-то подсказывал, но сейчас он не занимается этим.

это он раньше был свободный художник

а теперь он директор -- семеро по лавкам -- ему сотрудников кормить надоть
т.ч. не будьте такими злыми, ходите на их представления, они их таки иногда дают:
http://www.sql.ru/forum/1248096/pgconf-russia-2017-segodnya-so-skidkoy?mid=20162856&hl=postgrespro#20162856

и ещё тут:
https://postgrespro.ru/education/courses
20 мар 17, 17:56    [20315055]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Ролг Хупин
Member

Откуда: Оттуда
Сообщений: 915
qwwq
Ролг Хупин
Здесь раньше бывал Бартунов, что-то подсказывал, но сейчас он не занимается этим.

это он раньше был свободный художник

а теперь он директор -- семеро по лавкам -- ему сотрудников кормить надоть
т.ч. не будьте такими злыми, ходите на их представления, они их таки иногда дают:
http://www.sql.ru/forum/1248096/pgconf-russia-2017-segodnya-so-skidkoy?mid=20162856&hl=postgrespro#20162856

и ещё тут:
https://postgrespro.ru/education/courses


Не, не злые, просто помнится как было раньше, а так - всё объяснимо.

На представления не все могут доехать, а вот если бы они материалы в интернет выкладывали было бы неплохо
20 мар 17, 18:00    [20315069]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
cone
Member

Откуда: СПб
Сообщений: 40
Лебедкин,
> я здесь всё прочитал ...
В их версии постгреса есть расширение hunspell_ru_ru. Можно начать с него. Словарь + настройка.
Хотя сей словарь тоже не без проблем, но их меньше, чем при использовании russian_stem
20 мар 17, 18:03    [20315084]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
cone
Member

Откуда: СПб
Сообщений: 40
with t(w)  as(values ('нужный'),('нужен'))
select  alias, token, lexemes from t,ts_debug('russian_hunspell',t.w);

 alias | token  | lexemes  
-------+--------+----------                                                                            
 word  | нужный | {нужный}                                                                             
 word  | нужен  | {нужный}                                                                             
20 мар 17, 18:38    [20315213]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Oleg Bartunov
Member

Откуда:
Сообщений: 215
cone
with t(w)  as(values ('нужный'),('нужен'))
select  alias, token, lexemes from t,ts_debug('russian_hunspell',t.w);

 alias | token  | lexemes  
-------+--------+----------                                                                            
 word  | нужный | {нужный}                                                                             
 word  | нужен  | {нужный}                                                                             


Вот молодец, тоже хотел написать, что стеммер в поставке - это snowball и никогда на точность не претендует, равно как и hunspell, который все-таки имеет больше знаний про язык. Советую установить https://github.com/postgrespro/hunspell_dicts и установить словарь. А еще надо бы почитать документацию, там вроде как все написано, а еще есть наши презентации, например,
http://www.sai.msu.su/~megera/postgres/talks/pgconfeu-fts-2016.pdf, http://www.sai.msu.su/~megera/postgres/talks/fts_postgres_by_authors_2.pdf

Вот мой пример:

select ts_lexize('russian_hunspell', w.a) from (values('нужен'), ('нужно')) w(a);
 ts_lexize
-----------
 {нужный}
 {нужный}
(2 rows)
20 мар 17, 22:32    [20315771]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Oleg Bartunov
Member

Откуда:
Сообщений: 215
Ролг Хупин
qwwq
пропущено...

это он раньше был свободный художник

а теперь он директор -- семеро по лавкам -- ему сотрудников кормить надоть
т.ч. не будьте такими злыми, ходите на их представления, они их таки иногда дают:
http://www.sql.ru/forum/1248096/pgconf-russia-2017-segodnya-so-skidkoy?mid=20162856&hl=postgrespro#20162856

и ещё тут:
https://postgrespro.ru/education/courses


Не, не злые, просто помнится как было раньше, а так - всё объяснимо.

На представления не все могут доехать, а вот если бы они материалы в интернет выкладывали было бы неплохо


У нас все в сети лежит ! pgconf.ru 2017 только завершились, надо обработать видео, обязательно все выложим.
20 мар 17, 22:33    [20315775]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Ролг Хупин
Member

Откуда: Оттуда
Сообщений: 915
Oleg Bartunov
Ролг Хупин
пропущено...


Не, не злые, просто помнится как было раньше, а так - всё объяснимо.

На представления не все могут доехать, а вот если бы они материалы в интернет выкладывали было бы неплохо


У нас все в сети лежит ! pgconf.ru 2017 только завершились, надо обработать видео, обязательно все выложим.


А еще пишут, что мол юзеры злые!

ждем, спасибо!

зы. Нужна степ бай степ инструкция, как настроить FTS, кроме того, что в документации, чтобы с примерами словарей, которые можно юзить и т.д. Если бы вы у себя на сайте выложили юзеры были бы благодарны!
21 мар 17, 11:21    [20316721]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3204
Ролг Хупин
Oleg Bartunov
пропущено...


У нас все в сети лежит ! pgconf.ru 2017 только завершились, надо обработать видео, обязательно все выложим.


А еще пишут, что мол юзеры злые!

ждем, спасибо!

зы. Нужна степ бай степ инструкция, как настроить FTS, кроме того, что в документации, чтобы с примерами словарей, которые можно юзить и т.д. Если бы вы у себя на сайте выложили юзеры были бы благодарны!


Вы не только на шею сесть хотите но еще и ножки свесить ;).

PS:
-А зарплату вы тоже за меня получать будете?
- Ага!

--
Maxim Boguk
www.postgresql-consulting.ru
21 мар 17, 15:14    [20318012]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
ясно. попробую этот hanspell юзать. спасибо.
честно говоря, я думал что в постгресе из коробки все должно работать :)
21 мар 17, 16:31    [20318383]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3204
Лебедкин
ясно. попробую этот hanspell юзать. спасибо.
честно говоря, я думал что в постгресе из коробки все должно работать :)


Словари это вообще не часть базы никаким боком.
Равно как и локали например.

--
Maxim Boguk
www.postgresql-consulting.ru
21 мар 17, 16:55    [20318497]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Ролг Хупин
Member

Откуда: Оттуда
Сообщений: 915
Maxim Boguk
Ролг Хупин
пропущено...


А еще пишут, что мол юзеры злые!

ждем, спасибо!

зы. Нужна степ бай степ инструкция, как настроить FTS, кроме того, что в документации, чтобы с примерами словарей, которые можно юзить и т.д. Если бы вы у себя на сайте выложили юзеры были бы благодарны!


Вы не только на шею сесть хотите но еще и ножки свесить ;).

PS:
зарплату вы тоже за меня получать будете?
- Ага!

--
Maxim Boguk
www.postgresql-consulting.ru


Это же форум, тут речь про шею и ноги не идет, как и про зарплату. Здесь юзеры добровольно задают вопросы и отвечают на них.
Ну, вот...
21 мар 17, 17:19    [20318597]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
поставил hanspell, проверил слово "нужный" - слало работать правильней. но вообще то, поразмыслив, я все формы этого слова уже в стоп-слова внес.

вот другой пример: слова "чистить" и "очищать". я считаю что по смыслу это одно и то же слово, но словарь так не считает. как теперь правильно сделать чтобы эти слова искались вместе? добавлять синонимы?
21 мар 17, 17:40    [20318666]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Ролг Хупин
Member

Откуда: Оттуда
Сообщений: 915
Лебедкин
поставил hanspell, проверил слово "нужный" - слало работать правильней. но вообще то, поразмыслив, я все формы этого слова уже в стоп-слова внес.

вот другой пример: слова "чистить" и "очищать". я считаю что по смыслу это одно и то же слово, но словарь так не считает. как теперь правильно сделать чтобы эти слова искались вместе? добавлять синонимы?


вам бы поумерить свои фантазии, иначе не остановитесь, относитесь формально к словарям
21 мар 17, 17:52    [20318707]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
Ролг Хупин,
мне просто нужен поиск по текстам нормального качества. я специально для этого postgres поставил, вот теперь пытаюсь разобраться по каким принципам это настраивается и работает...
21 мар 17, 18:05    [20318753]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
qwwq
Member

Откуда:
Сообщений: 2037
Maxim Boguk
Словари это вообще не часть базы никаким боком.
Равно как и локали например.

кхм, например

кого за варчарпаттернопсы пороть будем ? директора ? (масяни, молчать!)
21 мар 17, 19:12    [20318893]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
cone
Member

Откуда: СПб
Сообщений: 40
Лебедкин
вот другой пример: слова "чистить" и "очищать". я считаю что по смыслу это одно и то же слово, но словарь так не считает. как теперь правильно сделать чтобы эти слова искались вместе? добавлять синонимы?

Одно и тоже по смыслу, а словарь пытается работать со словоформами. Т.е. синонимы.
Не переделывать же словарь.
22 мар 17, 09:55    [20320027]     Ответить | Цитировать Сообщить модератору
 Re: добавить стоп-слова для полнотекстового поиска.  [new]
Лебедкин
Member

Откуда:
Сообщений: 332
cone,

ага, догадался уже что в этом случае только синонимами можно разрулить.
а оно умеет извлекать корни слова? (в данном случае это "чист" и "чищ" )
или синонимы ко всем словоформам надо прописывать?
22 мар 17, 22:05    [20323093]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / PostgreSQL Ответить