Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск. Синонимы или другие словари. / 5 сообщений из 5, страница 1 из 1
14.07.2015, 11:36
    #39006761
Alexander8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск. Синонимы или другие словари.
Добрый день!

Есть таблица и строка:
Код: sql
1.
2.
3.
4.
5.
6.
7.
create table "FullTextSearch"
(
  "ID" serial not null,
  "Text" tsvector not null
);

insert into "FullTextSearch"("Text") values(to_tsvector('english', 'hollywood'))



Пытаюсь поискать по ней таким запросом:
Код: sql
1.
select * from "FullTextSearch" where "Text" @@ to_tsquery('english', 'holly:*')



Безуспешно, т.к. 'holly' в запросе преобразуется в 'holli'.
Что немного странно, т.к. существует самостоятельное слово 'holly', а слова 'holli' вроде как нет.
Код: sql
1.
select * from ts_debug('english', 'holly')


aliasdescriptiontokendictionariesdictionarylexemesasciiwordWord; all ASCIIholly{english_stem}english_stem{holli}

Что можно сделать, чтобы по holly все-таки находился hollywood?
Ну и сразу решить большинство подобных кейсов для других слов.
Или это невозможно сделать в общем случае?

Я почитал в документации про список синонимов и кастомные словари для конкретного языка.
Возможно, где-то есть словари и списки богаче, чем в дефолтной поставке?
Встречал упоминание ispell, но пока не использовал его.

Все параметры текстового поиска заданы по умолчанию.
Использую PostgreSQL 9.4.3

Спасибо.
...
Рейтинг: 0 / 0
15.07.2015, 10:21
    #39007580
Oleg Bartunov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск. Синонимы или другие словари.
Alexander8,

там все просто, используйте темплейт словаря синонимов для своего словаря mysyn.
Просто создайте файл с одной строчкой

holly hollywood

и поставьте этот словарь mysyn первым. Где-то здесь http://www.sai.msu.su/~megera/postgres/talks/ есть слайды про полнотекстовый поиск, если чтение документации не помогает.



Олег
...
Рейтинг: 0 / 0
15.07.2015, 13:17
    #39007791
Alexander8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск. Синонимы или другие словари.
Oleg Bartunov,

спасибо за ответ. В принципе, я читал про такое решение и могу его использовать.
Смущает то, что таким образом я решаю один конкретный кейс для одного слова.
Это не очень эффективно. Например, для bollywood и bolly:* снова получим эту же проблему.

Может быть где-то существуют обширные словари синонимов в общем доступе?
Хотя бы для английского языка.
Или с точки зрения пользователя это не критичная проблема, можно набрать еще одну букву и все найти.
...
Рейтинг: 0 / 0
15.07.2015, 13:20
    #39007794
Alexander8
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск. Синонимы или другие словари.
Раньше времени отправил предыдущее сообщение.
Alexander8 Или с точки зрения пользователя это не критичная проблема, можно набрать или убрать еще одну букву и все найти.

hollywood:
holl:* -> найдено
holly:* -> не найдено
hollyw:* -> найдено
...
Рейтинг: 0 / 0
15.07.2015, 15:11
    #39007958
Oleg Bartunov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Полнотекстовый поиск. Синонимы или другие словари.
Alexander8,

вот, что происходит:
Код: sql
1.
2.
3.
4.
5.
select * from ts_debug('english', 'holly:*');
   alias   |   description   | token |  dictionaries  |  dictionary  | lexemes
-----------+-----------------+-------+----------------+--------------+---------
 asciiword | Word, all ASCII | holly | {english_stem} | english_stem | {holli}
 blank     | Space symbols   | :*    | {}             | (null)       | (null)



Задумался, может не стоит префикс процессит совсем, скажем, выделить отдельный
токен prefix и по-умолчанию не обрабатывать никакими словарями.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Полнотекстовый поиск. Синонимы или другие словари. / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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