Эффект от использования операторов в to_tsquery () - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь использовать текстовый поиск postgresql. Я создал столбец ts_vector, используя существующие два столбца таблицы, и индексировал этот столбец, используя индекс GIN. Теперь, когда я запрашиваю, я заметил странное поведение, оценка запроса снижается, когда я использую такие операторы, как «&» или «|» в функции to_tsquery.

Для 1 миллиона записей: -

  1. объяснить название заголовка, тело из xyz ff где search_vector @@ to_tsquery ('engli sh', 'apps' ); -> оценка около 300
  2. объяснить название заголовка, тело из xyz ff, где search_vector @@ to_tsquery ('engli sh', 'apps & apps'); -> оценка около 30

Это поведение, которое я не могу понять, разница в запросах использует оператор, если я изменю его на «приложения и арендатор», тогда также оценка будет около 30, но для поиска по одному слову оценка высокая. Может кто-нибудь объяснить, пожалуйста, это поведение и причину этого.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Под "оценкой" я должен подразумевать, что вы имеете в виду оценки строк, о которых сообщает EXPLAIN?

Оценки строк для этого типа вещей часто не очень хороши. Почему тебе не все равно? Вы получаете неправильный план? Если да, пожалуйста, объясните более подробно, какой план вы получаете и какой план, по вашему мнению, вы должны получить, и почему вы так думаете.

Вы проводите научные исследования c? В этом случае вам абсолютно не следует использовать 9.5. Никто, кто даже заботится о производительности, не должен использовать 9,5, а тем более, кто проводит научные исследования c.

0 голосов
/ 19 апреля 2020

Когда вы используете операторы & или |, вы указываете функции to_tsquery, чтобы получить правило, содержащее два слова в вашей строке. Например, если вы поставите `to_tsquery ('engli sh', 'apps & tenant'), ваш результат должен содержать два слова в запросе (не в том же порядке). Таким образом, запрос будет искать два слова .

Еще одна вещь, которая может повлиять на ваш счет - это веса в поиске.

В по этой ссылке вы можете лучше понять операторов.

...