|
|
@@ -219,10 +219,20 @@ select avg(a) from t facet a
|
|
|
Точность `HyperLogLog` и порог преобразования из хеш-таблицы в HyperLogLog определяются настройкой `distinct_precision_threshold`. Важно использовать эту опцию с осторожностью, поскольку удвоение ее значения также удвоит максимальный объем памяти, необходимый для вычисления подсчетов. Максимальное использование памяти можно приблизительно оценить по формуле: `64 * max_matches * distinct_precision_threshold`, хотя на практике вычисления подсчетов часто используют меньше памяти, чем в худшем случае.
|
|
|
|
|
|
### expand_keywords
|
|
|
-`0` или `1` (по умолчанию `0`). Расширяет ключевые слова точными формами и/или звёздочками, если это возможно. Подробности смотрите в [expand_keywords](../Creating_a_table/NLP_and_tokenization/Wildcard_searching_settings.md#expand_keywords).
|
|
|
+`0` или `1` (по умолчанию `0`). Расширяет ключевые слова точными формами и/или звездочками, когда это возможно. Подробнее см. [expand_keywords](../Creating_a_table/NLP_and_tokenization/Wildcard_searching_settings.md#expand_keywords).
|
|
|
+
|
|
|
+### expand_blended
|
|
|
+`0`, `off`, `1` или любая комбинация опций `blend_mode` (по умолчанию `0`). Расширяет смешанные ключевые слова (токены, содержащие символы, настроенные через [blend_chars](../Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md#blend_chars)) на их составные варианты во время разбора запроса. При включении ключевые слова, такие как "well-being" (если `-` настроен в `blend_chars`), расширяются в варианты, такие как "well-being", "wellbeing", "well" и "being", которые затем группируются в поддеревья ИЛИ в дереве запроса.
|
|
|
+
|
|
|
+Поддерживаемые значения:
|
|
|
+* `0` или `off` - Расширение смешанных слов отключено (по умолчанию). Смешанные ключевые слова обрабатываются обычным образом без расширения.
|
|
|
+* `1` - Расширение смешанных слов включено и использует настройку [blend_mode](../Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md#blend_mode) таблицы для определения, какие варианты генерировать.
|
|
|
+* Любая опция(и) режима смешивания - Расширение смешанных слов включено с указанным режимом(ами) смешивания, переопределяя настройку `blend_mode` таблицы.
|
|
|
+
|
|
|
+Подробнее об опциях см. [blend_mode](../Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md#blend_mode).
|
|
|
|
|
|
### field_weights
|
|
|
-Именованный список целых чисел (веса пользователя для ранжирования по полям).
|
|
|
+Именованный список целых чисел (пользовательские веса по полям для ранжирования).
|
|
|
|
|
|
Пример:
|
|
|
```sql
|
|
|
@@ -233,72 +243,72 @@ SELECT ... OPTION field_weights=(title=10, body=3)
|
|
|
Использовать глобальную статистику (частоты) из файла [global_idf](../Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md#global_idf) для вычислений IDF.
|
|
|
|
|
|
### idf
|
|
|
-Кавычками, через запятую перечисленные флаги вычисления IDF. Известные флаги:
|
|
|
+Заключенный в кавычки список флагов вычисления IDF, разделенных запятыми. Известные флаги:
|
|
|
|
|
|
* `normalized`: вариант BM25, idf = log((N-n+1)/n), согласно Robertson et al
|
|
|
* `plain`: простой вариант, idf = log(N/n), согласно Sparck-Jones
|
|
|
-* `tfidf_normalized`: дополнительно делить IDF на количество слов запроса, чтобы `TF*IDF` находился в диапазоне [0, 1]
|
|
|
-* `tfidf_unnormalized`: не делить дополнительно IDF на количество слов запроса, где N — размер коллекции, а n — количество совпадающих документов
|
|
|
+* `tfidf_normalized`: дополнительно делить IDF на количество слов в запросе, чтобы `TF*IDF` попадал в диапазон [0, 1]
|
|
|
+* `tfidf_unnormalized`: не делить дополнительно IDF на количество слов в запросе, где N - размер коллекции, а n - количество совпадающих документов
|
|
|
|
|
|
Исторически используемый по умолчанию IDF (обратная частота документа) в Manticore эквивалентен `OPTION idf='normalized,tfidf_normalized'`, и эти нормализации могут вызывать несколько нежелательных эффектов.
|
|
|
|
|
|
-Во-первых, `idf=normalized` приводит к штрафованию ключевых слов. Например, если вы ищете `the | something` и `the` встречается более чем в 50% документов, тогда документы с двумя ключевыми словами `the` и `something` будут иметь меньший вес, чем документы с одним ключевым словом `something`. Использование `OPTION idf=plain` это избегает. Простой IDF варьируется в диапазоне `[0, log(N)]`, и ключевые слова никогда не штрафуются; а нормализованный IDF варьируется в диапазоне `[-log(N), log(N)]`, и слишком частотные ключевые слова штрафуются.
|
|
|
+Во-первых, `idf=normalized` приводит к штрафованию ключевых слов. Например, если вы ищете `the | something` и `the` встречается более чем в 50% документов, то документы с обоими ключевыми словами `the` и `something` получат меньший вес, чем документы только с одним ключевым словом `something`. Использование `OPTION idf=plain` позволяет избежать этого. Простой IDF варьируется в диапазоне `[0, log(N)]`, и ключевые слова никогда не штрафуются; в то время как нормализованный IDF варьируется в диапазоне `[-log(N), log(N)]`, и слишком частые ключевые слова штрафуются.
|
|
|
|
|
|
-Во-вторых, `idf=tfidf_normalized` приводит к дрейфу IDF между запросами. Исторически IDF также делился на количество ключевых слов в запросе, гарантируя, что сумма по всем ключевым словам `sum(tf*idf)` оставалась в диапазоне [0,1]. Однако это означало, что запросы, например, `word1` и `word1 | nonmatchingword2` присваивали разный вес абсолютно одинаковому множеству результатов, так как IDF для обоих слов делилось на 2. Использование `OPTION idf='tfidf_unnormalized'` решает эту проблему. Имейте в виду, что факторы ранжирования BM25, BM25A, BM25F() будут соответственно скорректированы при отключении этой нормализации.
|
|
|
+Во-вторых, `idf=tfidf_normalized` приводит к смещению IDF между запросами. Исторически IDF также делился на количество ключевых слов в запросе, гарантируя, что вся `sum(tf*idf)` по всем ключевым словам остается в пределах диапазона [0,1]. Однако это означало, что запросы типа `word1` и `word1 | nonmatchingword2` присваивали разные веса одному и тому же набору результатов, поскольку IDF как для `word1`, так и для `nonmatchingword2` делились на 2. Использование `OPTION idf='tfidf_unnormalized'` решает эту проблему. Имейте в виду, что факторы ранжирования BM25, BM25A, BM25F() будут соответствующим образом скорректированы при отключении этой нормализации.
|
|
|
|
|
|
-Флаги IDF могут комбинироваться; `plain` и `normalized` взаимоисключающие; `tfidf_unnormalized` и `tfidf_normalized` также взаимоисключающие; неуказанные флаги в таких взаимоисключающих группах принимают значения по умолчанию. Это означает, что `OPTION idf=plain` эквивалентен полному указанию `OPTION idf='plain,tfidf_normalized'`.
|
|
|
+Флаги IDF можно комбинировать; `plain` и `normalized` являются взаимоисключающими; `tfidf_unnormalized` и `tfidf_normalized` также являются взаимоисключающими; и неуказанные флаги в таких взаимоисключающих группах по умолчанию сохраняют свои исходные настройки. Это означает, что `OPTION idf=plain` эквивалентно полному указанию `OPTION idf='plain,tfidf_normalized'`.
|
|
|
|
|
|
### jieba_mode
|
|
|
-Задает режим сегментации Jieba для запроса.
|
|
|
+Определяет режим сегментации Jieba для запроса.
|
|
|
|
|
|
-При использовании китайской сегментации Jieba иногда полезно применять разные режимы сегментации для токенизации документов и запроса. Полный список режимов смотрите в [jieba_mode](../Creating_a_table/NLP_and_tokenization/Morphology.md#jieba_mode).
|
|
|
+При использовании китайской сегментации Jieba иногда может быть полезно использовать разные режимы сегментации для токенизации документов и запроса. Полный список режимов см. в [jieba_mode](../Creating_a_table/NLP_and_tokenization/Morphology.md#jieba_mode).
|
|
|
|
|
|
### index_weights
|
|
|
-Именованный список целых чисел. Веса пользователя для ранжирования по таблицам.
|
|
|
+Именованный список целых чисел. Пользовательские веса по таблицам для ранжирования.
|
|
|
|
|
|
### local_df
|
|
|
-`0` или `1`, автоматически суммирует DFs по всем локальным частям распределенной таблицы, обеспечивая согласованный (и точный) IDF для локально шардированной таблицы. По умолчанию включено для дисковых частей RT-таблицы. Термины запроса со звёздочками игнорируются.
|
|
|
+`0` или `1`, автоматически суммировать DF по всем локальным частям распределенной таблицы, обеспечивая согласованные (и точные) IDF для локально шардированной таблицы. По умолчанию включено для дисковых чанков RT-таблицы. Термины запроса с подстановочными знаками игнорируются.
|
|
|
|
|
|
### low_priority
|
|
|
-`0` или `1` (по умолчанию `0`). Установка `low_priority=1` выполняет запрос с более низким приоритетом, пересматривая задания для него в 10 раз реже, чем для запросов с обычным приоритетом.
|
|
|
+`0` или `1` (по умолчанию `0`). Установка `low_priority=1` выполняет запрос с более низким приоритетом, перепланируя его задачи в 10 раз реже, чем другие запросы с обычным приоритетом.
|
|
|
|
|
|
### max_matches
|
|
|
-Целое число. Максимальное количество совпадений, сохраняемых для каждого запроса.
|
|
|
+Целое число. Значение максимального количества совпадений на запрос.
|
|
|
|
|
|
-Максимальное количество совпадений, которые сервер сохраняет в ОЗУ для каждой таблицы и может вернуть клиенту. По умолчанию 1000.
|
|
|
+Максимальное количество совпадений, которое сервер хранит в оперативной памяти для каждой таблицы и может вернуть клиенту. По умолчанию равно 1000.
|
|
|
|
|
|
-Введено для контроля и ограничения использования ОЗУ, настройка `max_matches` определяет, сколько совпадений будет храниться в ОЗУ при поиске по каждой таблице. Все найденные совпадения обрабатываются, но в память сохраняются и в итоге клиенту возвращаются только лучшие N из них. Например, предположим, что таблица содержит 2 000 000 совпадений для запроса. Редко бывает нужным получить их все. Вместо этого нужно просмотреть все совпадения, но выбрать «лучшие» 500, например, по какому-то критерию (сортировка по релевантности, цене или другим факторам), и показать во всплывающих страницах для пользователя по 20–100 совпадений. Отслеживание только лучших 500 совпадений гораздо эффективнее с точки зрения ОЗУ и ЦП, чем хранение всех 2 000 000, сортировка и затем отбрасывание всего, кроме первых 20 для страницы результатов поиска. Параметр `max_matches` контролирует количество N в этом «лучшие N».
|
|
|
+Введенная для контроля и ограничения использования оперативной памяти, настройка `max_matches` определяет, сколько совпадений будет храниться в оперативной памяти при поиске по каждой таблице. Каждое найденное совпадение все равно обрабатывается, но только лучшие N из них будут сохранены в памяти и в конечном итоге возвращены клиенту. Например, предположим, что таблица содержит 2 000 000 совпадений для запроса. Редко возникает необходимость получить их все. Вместо этого вам нужно просканировать их все, но выбрать только "лучшие" 500, например, на основе некоторых критериев (например, отсортированных по релевантности, цене или другим факторам) и отобразить эти 500 совпадений конечному пользователю страницами по 20-100 совпадений. Отслеживание только лучших 500 совпадений гораздо эффективнее по использованию оперативной памяти и процессора, чем хранение всех 2 000 000 совпадений, их сортировка, а затем отбрасывание всего, кроме первых 20, необходимых для страницы результатов поиска. `max_matches` контролирует N в этом количестве "лучших N".
|
|
|
|
|
|
-Этот параметр существенно влияет на использование ОЗУ и ЦП для каждого запроса. Обычно приемлемы значения от 1000 до 10000, но более высокие лимиты следует использовать с осторожностью. Небрежное увелечение max_matches до 1 000 000 означает, что `searchd` потребуется выделить и инициализировать буфер совпадений с 1 миллионом записей для каждого запроса. Это неизбежно увеличит использование ОЗУ на запрос и, в некоторых случаях, может заметно повлиять на производительность.
|
|
|
+Этот параметр значительно влияет на использование оперативной памяти и процессора для каждого запроса. Значения от 1 000 до 10 000 обычно приемлемы, но более высокие лимиты следует использовать с осторожностью. Бездумное увеличение max_matches до 1 000 000 означает, что `searchd` должен будет выделять и инициализировать буфер совпадений на 1 миллион записей для каждого запроса. Это неизбежно увеличит использование оперативной памяти на запрос и, в некоторых случаях, может заметно повлиять на производительность.
|
|
|
|
|
|
-Дополнительную информацию о влиянии параметра `max_matches` смотрите в [max_matches_increase_threshold](../Searching/Options.md#max_matches_increase_threshold).
|
|
|
+Обратитесь к [max_matches_increase_threshold](../Searching/Options.md#max_matches_increase_threshold) для получения дополнительной информации о том, как это может повлиять на поведение опции `max_matches`.
|
|
|
|
|
|
### max_matches_increase_threshold
|
|
|
|
|
|
Целое число. Устанавливает порог, до которого можно увеличить `max_matches`. По умолчанию 16384.
|
|
|
|
|
|
-Manticore может увеличить `max_matches` для повышения точности группировки и/или агрегации при включенном `pseudo_sharding`, если обнаружено, что количество уникальных значений атрибута группировки меньше этого порога. Потеря точности может произойти при выполнении запроса в нескольких потоках через псевдо-шардинг или при параллельном поиске в дисковых частях RT-таблицы.
|
|
|
+Manticore может увеличить `max_matches` для повышения точности группировки и/или агрегации, когда включен `pseudo_sharding`, и если он обнаруживает, что количество уникальных значений атрибута группировки меньше этого порога. Потеря точности может произойти, когда псевдошардирование выполняет запрос в нескольких потоках или когда RT-таблица проводит параллельный поиск в дисковых чанках.
|
|
|
|
|
|
-Если количество уникальных значений атрибута группировки меньше порога, `max_matches` будет установлено в это значение. В противном случае будет использовано значение `max_matches` по умолчанию.
|
|
|
+Если количество уникальных значений атрибута группировки меньше порога, `max_matches` будет установлено в это число. В противном случае будет использовано значение `max_matches` по умолчанию.
|
|
|
|
|
|
-Если `max_matches` был явно задан в опциях запроса, этот порог не действует.
|
|
|
+Если `max_matches` было явно установлено в параметрах запроса, этот порог не действует.
|
|
|
|
|
|
-Имейте в виду, что слишком высокое значение этого порога приведет к увеличению потребления памяти и общему снижению производительности.
|
|
|
+Имейте в виду, что если этот порог установлен слишком высоко, это приведет к увеличению потребления памяти и общему снижению производительности.
|
|
|
|
|
|
-Вы также можете применить режим гарантированной точности группировки/агрегации с помощью опции [accurate_aggregation](../Searching/Options.md#accurate_aggregation).
|
|
|
+Вы также можете принудительно включить режим гарантированной точности группировки/агрегации с помощью опции [accurate_aggregation](../Searching/Options.md#accurate_aggregation).
|
|
|
|
|
|
### max_query_time
|
|
|
-Устанавливает максимальное время выполнения поискового запроса в миллисекундах. Должно быть неотрицательным целым числом. Значение по умолчанию — 0, что означает «не ограничиваться». Локальные поисковые запросы будут прерваны после истечения заданного времени. Обратите внимание, что если вы выполняете поиск, обращающийся к нескольким локальным таблицам, это ограничение применяется к каждой таблице отдельно. Будьте готовы к тому, что это может немного увеличить время отклика запроса из-за накладных расходов, связанных с постоянным отслеживанием момента, когда нужно остановить запрос.
|
|
|
+Устанавливает максимальное время выполнения поискового запроса в миллисекундах. Должно быть неотрицательным целым числом. Значение по умолчанию — 0, что означает «не ограничивать». Локальные поисковые запросы будут остановлены, как только истечет указанное время. Обратите внимание, что если вы выполняете поиск, который запрашивает несколько локальных таблиц, этот лимит применяется к каждой таблице отдельно. Имейте в виду, что это может немного увеличить время отклика запроса из-за накладных расходов, вызванных постоянным отслеживанием, не пора ли остановить запрос.
|
|
|
|
|
|
### max_predicted_time
|
|
|
-Целое число. Максимальное прогнозируемое время поиска; смотрите [predicted_time_costs](../Server_settings/Searchd.md#predicted_time_costs).
|
|
|
+Целое число. Максимальное прогнозируемое время поиска; см. [predicted_time_costs](../Server_settings/Searchd.md#predicted_time_costs).
|
|
|
|
|
|
### morphology
|
|
|
-`none` позволяет заменять все термины запроса их точными формами, если таблица была создана с включённой опцией [index_exact_words](../Creating_a_table/NLP_and_tokenization/Morphology.md#index_exact_words). Это полезно для предотвращения стемминга или лемматизации терминов запроса.
|
|
|
+`none` позволяет заменять все термины запроса их точными формами, если таблица была построена с включенной опцией [index_exact_words](../Creating_a_table/NLP_and_tokenization/Morphology.md#index_exact_words). Это полезно для предотвращения стемминга или лемматизации терминов запроса.
|
|
|
|
|
|
### not_terms_only_allowed
|
|
|
<!-- example not_terms_only_allowed -->
|
|
|
-`0` или `1` разрешает самостоятельное [отрицание](../Searching/Full_text_matching/Operators.md#Negation-operator) для запроса. Значение по умолчанию — 0. См. также соответствующую [глобальную настройку](../Server_settings/Searchd.md#not_terms_only_allowed).
|
|
|
+`0` или `1` разрешает автономное [отрицание](../Searching/Full_text_matching/Operators.md#Negation-operator) для запроса. По умолчанию 0. См. также соответствующую [глобальную настройку](../Server_settings/Searchd.md#not_terms_only_allowed).
|
|
|
|
|
|
<!-- request SQL -->
|
|
|
```sql
|
|
|
@@ -314,7 +324,7 @@ MySQL [(none)]> select * from t where match('-donald') option not_terms_only_all
|
|
|
<!-- end -->
|
|
|
|
|
|
### ranker
|
|
|
-Выберите один из следующих вариантов:
|
|
|
+Выберите из следующих вариантов:
|
|
|
* `proximity_bm25`
|
|
|
* `bm25`
|
|
|
* `none`
|
|
|
@@ -326,51 +336,51 @@ MySQL [(none)]> select * from t where match('-donald') option not_terms_only_all
|
|
|
* `expr`
|
|
|
* `export`
|
|
|
|
|
|
-Подробнее о каждом ранжировщике смотрите в разделе [Ранжирование результатов поиска](../Searching/Sorting_and_ranking.md#Available-built-in-rankers).
|
|
|
+Для получения более подробной информации о каждом ранкере обратитесь к [Ранжирование результатов поиска](../Searching/Sorting_and_ranking.md#Available-built-in-rankers).
|
|
|
|
|
|
### rand_seed
|
|
|
-Позволяет указать конкретное значение начального «семени» для запроса `ORDER BY RAND()`, например: `... OPTION rand_seed=1234`. По умолчанию для каждого запроса автоматически создаётся новое иное значение.
|
|
|
+Позволяет указать конкретное целочисленное значение сида для запроса `ORDER BY RAND()`, например: `... OPTION rand_seed=1234`. По умолчанию для каждого запроса автоматически генерируется новое и разное значение сида.
|
|
|
|
|
|
### retry_count
|
|
|
-Целое число. Количество повторных попыток в распределённом режиме.
|
|
|
+Целое число. Количество повторных попыток для распределенного поиска.
|
|
|
|
|
|
### retry_delay
|
|
|
-Целое число. Задержка между попытками в распределённом режиме, в миллисекундах.
|
|
|
+Целое число. Задержка между повторными попытками для распределенного поиска, в миллисекундах.
|
|
|
|
|
|
### scroll
|
|
|
|
|
|
-Строка. Токен scroll для поэтапного получения результатов с помощью [Scroll pagination approach](../Searching/Pagination.md#Scroll-Search-Option).
|
|
|
+Строка. Токен прокрутки для постраничного вывода результатов с использованием [Подхода к пагинации Scroll](../Searching/Pagination.md#Scroll-Search-Option).
|
|
|
|
|
|
### sort_method
|
|
|
-* `pq` - очередь с приоритетом, используется по умолчанию
|
|
|
-* `kbuffer` - обеспечивает более быструю сортировку для уже частично отсортированных данных, например, для данных таблицы, отсортированных по id
|
|
|
-Набор результатов в обоих случаях одинаков; выбор одного из вариантов может лишь улучшить (или ухудшить) производительность.
|
|
|
+* `pq` - очередь с приоритетом, установлена по умолчанию
|
|
|
+* `kbuffer` - обеспечивает более быструю сортировку для уже предварительно отсортированных данных, например, данных таблицы, отсортированных по id
|
|
|
+Результирующий набор одинаков в обоих случаях; выбор того или иного варианта может просто улучшить (или ухудшить) производительность.
|
|
|
|
|
|
### threads
|
|
|
-Ограничивает максимальное число потоков, используемых для обработки текущего запроса. По умолчанию — без ограничений (запрос может использовать все [потоки](../Server_settings/Searchd.md#threads), установленные глобально).
|
|
|
-Для пакета запросов опция должна быть применена к первому запросу в пакете, после чего она применяется при создании рабочей очереди и действует на весь пакет. Эта опция эквивалентна опции [max_threads_per_query](../Server_settings/Searchd.md#max_threads_per_query), но применяется только к текущему запросу или пакету запросов.
|
|
|
+Ограничивает максимальное количество потоков, используемых для обработки текущего запроса. По умолчанию — без ограничений (запрос может занять все [потоки](../Server_settings/Searchd.md#threads), определенные глобально).
|
|
|
+Для пакета запросов опция должна быть прикреплена к самому первому запросу в пакете, и затем она применяется при создании рабочей очереди и действует на весь пакет. Эта опция имеет тот же смысл, что и опция [max_threads_per_query](../Server_settings/Searchd.md#max_threads_per_query), но применяется только к текущему запросу или пакету запросов.
|
|
|
|
|
|
### token_filter
|
|
|
-Значение в кавычках, строка с разделителем двоеточием в формате `имя_библиотеки:имя_плагина:необязательная_строка_настроек`. При вызове полнотекстового поиска для каждой задействованной таблицы создаётся фильтр токенов в режиме выполнения запроса, что позволяет реализовать собственный токенизатор, генерирующий токены по пользовательским правилам.
|
|
|
+Заключенная в кавычки строка, разделенная двоеточиями: `имя библиотеки:имя плагина:необязательная строка настроек`. Фильтр токенов времени запроса создается для каждого поиска, когда полнотекстовый поиск вызывается каждой задействованной таблицей, позволяя реализовать пользовательский токенизатор, который генерирует токены в соответствии с пользовательскими правилами.
|
|
|
```sql
|
|
|
SELECT * FROM index WHERE MATCH ('yes@no') OPTION token_filter='mylib.so:blend:@'
|
|
|
```
|
|
|
### expansion_limit
|
|
|
-Ограничивает максимальное число расширенных ключевых слов для одного подстановочного знака, по умолчанию 0 означает отсутствие ограничений. Дополнительную информацию см. в разделе [expansion_limit](../Server_settings/Searchd.md#expansion_limit).
|
|
|
+Ограничивает максимальное количество расширенных ключевых слов для одного подстановочного знака, значение по умолчанию 0 означает отсутствие ограничений. Для получения дополнительных сведений обратитесь к [expansion_limit](../Server_settings/Searchd.md#expansion_limit).
|
|
|
|
|
|
## Подсказки оптимизатора запросов
|
|
|
|
|
|
<!-- example options_force -->
|
|
|
|
|
|
-В редких случаях встроенный анализатор запросов Manticore может ошибочно интерпретировать запрос и определить, следует ли использовать индекс docid, вторичные индексы или посколонный скан. Чтобы переопределить решения оптимизатора запросов, можно использовать следующие подсказки в вашем запросе:
|
|
|
+В редких случаях встроенный анализатор запросов Manticore может ошибаться в понимании запроса и определении того, следует ли использовать индекс docid, вторичные индексы или колоночное сканирование. Чтобы переопределить решения оптимизатора запросов, вы можете использовать следующие подсказки в своем запросе:
|
|
|
|
|
|
-* `/*+ DocidIndex(id) */` — принудительно использовать индекс docid, `/*+ NO_DocidIndex(id) */` — указать оптимизатору игнорировать его
|
|
|
-* `/*+ SecondaryIndex(<attr_name1>[, <attr_nameN>]) */` — принудительно использовать вторичный индекс (если доступен), `/*+ NO_SecondaryIndex(id) */` — указать оптимизатору игнорировать его
|
|
|
-* `/*+ ColumnarScan(<attr_name1>[, <attr_nameN>]) */` — принудительно использовать посколонный скан (если атрибут колонный), `/*+ NO_ColumnarScan(id) */` — указать оптимизатору игнорировать его
|
|
|
+* `/*+ DocidIndex(id) */` для принудительного использования индекса docid, `/*+ NO_DocidIndex(id) */` чтобы указать оптимизатору игнорировать его
|
|
|
+* `/*+ SecondaryIndex(<attr_name1>[, <attr_nameN>]) */` для принудительного использования вторичного индекса (если доступен), `/*+ NO_SecondaryIndex(id) */` чтобы указать оптимизатору игнорировать его
|
|
|
+* `/*+ ColumnarScan(<attr_name1>[, <attr_nameN>]) */` для принудительного использования колоночного сканирования (если атрибут колоночный), `/*+ NO_ColumnarScan(id) */` чтобы указать оптимизатору игнорировать его
|
|
|
|
|
|
-Обратите внимание, что при выполнении полнотекстового запроса с фильтрами оптимизатор запроса выбирает между пересечением результатов полнотекстового дерева с результатами фильтра или стандартным подходом «сначала совпадение, затем фильтр». Указание *любой* подсказки заставит демон использовать путь кода, который выполняет пересечение результатов полнотекстового дерева с фильтрующими результатами.
|
|
|
+Обратите внимание, что при выполнении полнотекстового запроса с фильтрами оптимизатор запросов выбирает между пересечением результатов полнотекстового дерева с результатами фильтров или использованием стандартного подхода "сначала сопоставление, затем фильтрация". Указание *любой* подсказки заставит демона использовать путь выполнения, который осуществляет пересечение результатов полнотекстового дерева с результатами фильтров.
|
|
|
|
|
|
-Подробнее о работе оптимизатора запросов смотрите на странице [Оптимизатор на основе стоимости](../Searching/Cost_based_optimizer.md).
|
|
|
+Для получения дополнительной информации о том, как работает оптимизатор запросов, обратитесь к странице [Стоимостной оптимизатор](../Searching/Cost_based_optimizer.md).
|
|
|
|
|
|
<!-- request SQL -->
|
|
|
|
|
|
@@ -381,7 +391,7 @@ SELECT * FROM students where age > 21 /*+ SecondaryIndex(age) */
|
|
|
<!-- end -->
|
|
|
|
|
|
<!-- example comments -->
|
|
|
-При использовании клиента MySQL/MariaDB не забудьте включить флаг `--comments`, чтобы подсказки были активны в ваших запросах.
|
|
|
+При использовании клиента MySQL/MariaDB убедитесь, что включен флаг `--comments`, чтобы активировать подсказки в ваших запросах.
|
|
|
|
|
|
<!-- request mysql -->
|
|
|
```bash
|