Динамичный или столбец-ized tsvector индекс?

Вы можете использовать аннотации, такие как {Object =} или {number =}, в разделе комментариев при использовании доклета:

/** 
 * @param {object=}xyz
 */ 

Современная IDE знает, как распознавать аннотации для JavaScript, и показывает вам указания на потенциальные проблемы в вашем коде.

Пример:

/**
 *
 * @param query 
 * @param callback 
 * @param {number=} ttl optional time-to-leave
 */
 loadByJSONP:function loadByJSONP(query, callback, ttl) {
   ...do some work
 }

В этом примере «ttl» является необязательным. аннотация {число =} указывает IDE, что этот параметр является необязательным. Соответственно, когда вы вызываете эту функцию только с двумя параметрами, вы не получите предупреждение.

Аннотации также могут использоваться для обозначения ожидаемого типа. это делает ваш код лучше и менее подвержен ошибкам. Вот ссылка для аннотаций:

https://developers.google.com/closure/compiler/docs/js-for-compiler

10
задан Matt Huggins 30 October 2009 в 04:27
поделиться

3 ответа

Использование Варианта 1 не приведет к замедлению поиска.

Индекс GIN будет использоваться независимо от того, создавали ли вы его при создании экземпляра. столбец или вычисленное выражение.

Вам просто нужно изменить синтаксис запроса:

SELECT  *
FROM    posts
WHERE   TO_TSVECTOR('english', title) @@ myquery

в первом случае или

SELECT  *
FROM    posts
WHERE   title_vector @@ myquery

во втором случае.

Вы, вероятно, сможете немного сэкономить время, используя TS_RANK над созданным столбцом.

7
ответ дан 3 December 2019 в 22:00
поделиться

Представим, что появилось 20 новых тем & 100 новых сообщений в день. Которые бы твой выбор? Что делать, если количество тем / сообщений в день вдвое больше? В пять раз больше? Десять раз? Ваш решение одного изменения по сравнению с другим?

Это примерно 36 000 сообщений в год. Неважно. Вероятно, в десять раз больше, даже на дешевой машине.

Однако вам может понадобиться третья таблица, содержащая явный tsvector, объединяющий тему и основной текст вместе. Затем вы можете использовать встроенную систему взвешивания и выполнить один поиск, чтобы обеспечить тот вид поиска, который люди обычно ожидают на форумах и т. Д. Это будет означать написание пользовательских триггеров для обновления вашего tsvector при изменении любой исходной таблицы.

5
ответ дан 3 December 2019 в 22:00
поделиться

Обычно я бы сохранил tsvector в поле, потому что это будет также предоставляют удобный доступ к таким вещам, как заголовок () и ранг ().

4
ответ дан 3 December 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: