Подсветка позволяет получить выделенные фрагменты текста (называемые сниппетами) из документов, содержащих совпадающие ключевые слова.
Функция SQL HIGHLIGHT(), свойство "highlight" в JSON-запросах через HTTP и функция highlight() в PHP-клиенте используют встроенное хранилище документов для получения исходного содержимого поля (включено по умолчанию).
- SQL
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
SELECT HIGHLIGHT() FROM books WHERE MATCH('try');+----------------------------------------------------------+
| highlight() |
+----------------------------------------------------------+
| Don`t <b>try</b> to compete in childishness, said Bliss. |
+----------------------------------------------------------+
1 row in set (0.00 sec)При использовании SQL для подсветки результатов поиска вы получите сниппеты из различных полей, объединённые в одну строку из-за ограничений протокола MySQL. Вы можете настроить разделители конкатенации с помощью опций field_separator и snippet_separator, как описано ниже.
При выполнении JSON-запросов через HTTP или использовании PHP-клиента таких ограничений нет, и набор результатов включает массив полей, содержащих массивы сниппетов (без разделителей).
Учтите, что параметры генерации сниппетов, такие как limit, limit_words и limit_snippets, применяются по умолчанию к каждому полю отдельно. Вы можете изменить это поведение с помощью опции limits_per_field, но это может привести к нежелательным результатам. Например, в одном поле могут быть совпадающие ключевые слова, но сниппеты из него не будут включены в результат, если они не набрали высокий рейтинг по сравнению со сниппетами из других полей в движке подсветки.
Алгоритм подсветки в настоящее время отдает приоритет лучшим сниппетам (с более близкими совпадениями фраз), а затем сниппетам с ключевыми словами, которые еще не включены в результат. В общем, он стремится выделить лучшее совпадение для запроса и подсветить все ключевые слова запроса, насколько это разрешено лимитами. Если в текущем поле совпадений не найдено, начало документа будет обрезано в соответствии с лимитами и возвращено по умолчанию. Чтобы вернуть пустую строку вместо этого, установите опцию allow_empty в 1.
Подсветка выполняется на так называемом этапе post limit, что означает, что генерация сниппетов откладывается не только до подготовки всего финального набора результатов, но и после применения клаузы LIMIT. Например, с клаузой LIMIT 20,10 функция HIGHLIGHT() будет вызвана максимум 10 раз.
Существует несколько дополнительных параметров подсветки, которые можно использовать для тонкой настройки генерации сниппетов. Они общие для SQL, HTTP и PHP клиентов.
Строка, вставляемая перед совпадением ключевого слова. В этой строке можно использовать макрос %SNIPPET_ID%. Первое вхождение макроса заменяется на увеличивающийся номер сниппета в пределах текущего сниппета. Нумерация начинается с 1 по умолчанию, но может быть переопределена опцией start_snippet_id. %SNIPPET_ID% сбрасывается в начале каждого нового документа. Значение по умолчанию — <b>.
Строка, вставляемая после совпадения ключевого слова. Значение по умолчанию — </b>.
Максимальный размер сниппета в символах (кодовых точках). Значение по умолчанию — 256. Применяется по умолчанию к каждому полю отдельно, см. limits_per_field.
Ограничивает максимальное количество слов, которое может быть включено в результат. Обратите внимание, что это ограничение применяется ко всем словам, а не только к совпавшим ключевым словам для подсветки. Например, если подсвечивается Mary и выбран сниппет Mary had a little lamb, то это включает 5 слов в этот лимит, а не только 1. Значение по умолчанию — 0 (без ограничений). Применяется по умолчанию к каждому полю отдельно, см. limits_per_field.
Ограничивает максимальное количество сниппетов, которые могут быть включены в результат. Значение по умолчанию — 0 (без ограничений). Применяется по умолчанию к каждому полю отдельно, см. limits_per_field.
Определяет, работают ли limit, limit_words и limit_snippets как индивидуальные ограничения в каждом поле документа, который подсвечивается, или как глобальные ограничения на весь документ. Установка этой опции в 0 означает, что все объединённые результаты подсветки для одного документа должны укладываться в указанные лимиты. Недостаток этого в том, что вы можете получить несколько подсвеченных сниппетов в одном поле и ни одного в другом, если движок подсветки решит, что они релевантнее. Значение по умолчанию — 1 (использовать лимиты на поле).
Количество слов, выбираемых вокруг каждого блока с совпадающим ключевым словом. Значение по умолчанию — 5.
Определяет, следует ли дополнительно разбивать сниппеты по границам фраз, как настроено в параметрах таблицы с использованием директивы phrase_boundary. Значение по умолчанию — 0 (не использовать границы).
Задает порядок сортировки извлечённых сниппетов: по релевантности (убывание веса) или по порядку появления в документе (возрастание позиции). Значение по умолчанию — 0 (не использовать сортировку по весу).
Игнорирует лимит длины до тех пор, пока в результате не будут включены все ключевые слова. Значение по умолчанию — 0 (не заставлять включать все ключевые слова).
Устанавливает начальное значение макроса %SNIPPET_ID% (который обнаруживается и расширяется в строках before_match, after_match). Значение по умолчанию — 1.
Определяет режим удаления HTML-разметки. По умолчанию index, что означает использование настроек таблицы. Другие значения: none и strip, которые принудительно пропускают или применяют удаление независимо от настроек таблицы; и retain, который сохраняет HTML-разметку и защищает её от выделения. Режим retain можно использовать только при выделении полных документов и, следовательно, требует, чтобы не были установлены ограничения на размер сниппетов. Допустимые строковые значения: none, strip, index и retain.
Разрешает возвращать пустую строку в качестве результата выделения, когда для текущего поля не удалось сгенерировать сниппеты (нет совпадения ключевых слов или сниппеты не укладываются в ограничение). По умолчанию вместо пустой строки возвращается начало исходного текста. Значение по умолчанию — 0 (не разрешать пустой результат).
Гарантирует, что сниппеты не пересекают границы предложения, абзаца или зоны (при использовании с таблицей, у которой включены соответствующие настройки индексации). Допустимые значения: sentence, paragraph и zone.
Добавляет HTML-тег с именем охватывающей зоны перед каждым сниппетом. По умолчанию 0 (не добавлять имена зон).
Определяет, следует ли принудительно генерировать сниппеты, даже если ограничения позволяют выделить весь текст. По умолчанию 0 (не принуждать к генерации сниппетов).
- SQL
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
SELECT HIGHLIGHT({limit=50}) FROM books WHERE MATCH('try|gets|down|said');+---------------------------------------------------------------------------+
| highlight({limit=50}) |
+---------------------------------------------------------------------------+
| ... , "It <b>gets</b> infantile pleasure ... to knock it <b>down</b>." |
| Don`t <b>try</b> to compete in childishness, <b>said</b> Bliss. |
| ... a small room. Bander <b>said</b>, "Come, half-humans, I ... |
+---------------------------------------------------------------------------+
3 rows in set (0.00 sec)Функция HIGHLIGHT() может использоваться для выделения результатов поиска. Вот её синтаксис:
HIGHLIGHT([options], [field_list], [query] )
По умолчанию она работает без аргументов.
- SQL
SELECT HIGHLIGHT() FROM books WHERE MATCH('before');+-----------------------------------------------------------+
| highlight() |
+-----------------------------------------------------------+
| A door opened <b>before</b> them, revealing a small room. |
+-----------------------------------------------------------+
1 row in set (0.00 sec)HIGHLIGHT() извлекает все доступные полнотекстовые поля из хранилища документов и выделяет их в соответствии с предоставленным запросом. Поддерживается синтаксис полей в запросах. Текст полей разделяется с помощью field_separator, который можно изменить в опциях.
- SQL
SELECT HIGHLIGHT() FROM books WHERE MATCH('@title one');+-----------------+
| highlight() |
+-----------------+
| Book <b>one</b> |
+-----------------+
1 row in set (0.00 sec)Необязательный первый аргумент в HIGHLIGHT() — это список опций.
- SQL
SELECT HIGHLIGHT({before_match='[match]',after_match='[/match]'}) FROM books WHERE MATCH('@title one');+------------------------------------------------------------+
| highlight({before_match='[match]',after_match='[/match]'}) |
+------------------------------------------------------------+
| Book [match]one[/match] |
+------------------------------------------------------------+
1 row in set (0.00 sec)Необязательный второй аргумент — это строка, содержащая одно поле или список полей, разделённых запятыми. Если этот аргумент присутствует, из хранилища документов будут извлечены и выделены только указанные поля. Пустая строка в качестве второго аргумента означает "извлечь все доступные поля".
- SQL
SELECT HIGHLIGHT({},'title,content') FROM books WHERE MATCH('one|robots');+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| highlight({},'title,content') |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Book <b>one</b> | They followed Bander. The <b>robots</b> remained at a polite distance, but their presence was a constantly felt threat. |
| Bander ushered all three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander gestured the other <b>robots</b> away and entered itself. The door closed behind it. |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)В качестве альтернативы, вы можете использовать второй аргумент для указания строкового атрибута или имени поля без кавычек. В этом случае предоставленная строка будет выделена в соответствии с запросом, но синтаксис полей будет проигнорирован.
- SQL
SELECT HIGHLIGHT({}, title) FROM books WHERE MATCH('one');+---------------------+
| highlight({},title) |
+---------------------+
| Book <b>one</b> |
| Book five |
+---------------------+
2 rows in set (0.00 sec)Необязательный третий аргумент — это запрос. Он используется для выделения результатов поиска по запросу, отличному от того, который использовался для поиска.
- SQL
SELECT HIGHLIGHT({},'title', 'five') FROM books WHERE MATCH('one');+-------------------------------+
| highlight({},'title', 'five') |
+-------------------------------+
| Book one |
| Book <b>five</b> |
+-------------------------------+
2 rows in set (0.00 sec)Хотя HIGHLIGHT() предназначена для работы с хранимыми полнотекстовыми полями и строковыми атрибутами, её также можно использовать для выделения произвольного текста. Имейте в виду, что если запрос содержит какие-либо операторы поиска по полям (например, @title hello @body world), часть, относящаяся к полю, в этом случае игнорируется.
- SQL
SELECT HIGHLIGHT({},TO_STRING('some text to highlight'), 'highlight') FROM books WHERE MATCH('@title one');+----------------------------------------------------------------+
| highlight({},TO_STRING('some text to highlight'), 'highlight') |
+----------------------------------------------------------------+
| some text to <b>highlight</b> |
+----------------------------------------------------------------+
1 row in set (0.00 sec)Некоторые опции актуальны только при генерации одной строки в качестве результата (а не массива сниппетов). Это относится исключительно к SQL-функции HIGHLIGHT():
Строка для вставки между сниппетами. По умолчанию ....
Строка для вставки между полями. По умолчанию |.
Другой способ выделения текста — использование оператора CALL SNIPPETS. Он в основном дублирует функциональность HIGHLIGHT(), но не может использовать встроенное хранилище документов. Однако он может загружать исходный текст из файлов.
Для выделения результатов полнотекстового поиска в JSON-запросах через HTTP содержимое полей должно храниться в хранилище документов (включено по умолчанию). В примере полнотекстовые поля content и title извлекаются из хранилища документов и выделяются в соответствии с запросом, указанным в условии query.
Выделенные сниппеты возвращаются в свойстве highlight массива hits.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "*": "one|robots" } },
"highlight":
{
"fields": ["content"]
}
}{
"took": 0,
"timed_out": false,
"hits": {
"total": 1,
"hits": [
{
"_id": 1,
"_score": 2788,
"_source": {
"title": "Books one",
"content": "They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. "
},
"highlight": {
"content": [
"They followed Bander. The <b>robots</b> remained at a polite distance, ",
" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander",
" gestured the other <b>robots</b> away and entered itself. The"
]
}
}
]
}
}Чтобы выделить все возможные поля, передайте пустой объект в качестве свойства highlight.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "*": "one|robots" } },
"highlight": {}
}{
"took": 0,
"timed_out": false,
"hits": {
"total": 1,
"hits": [
{
"_id": 1,
"_score": 2788,
"_source": {
"title": "Books one",
"content": "They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. "
},
"highlight": {
"title": [
"Books <b>one</b>"
],
"content": [
"They followed Bander. The <b>robots</b> remained at a polite distance, ",
" three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander",
" gestured the other <b>robots</b> away and entered itself. The"
]
}
}
]
}
}В дополнение к общим опциям выделения, для JSON-запросов через HTTP доступно несколько синонимов:
Объект fields содержит имена атрибутов с опциями. Он также может быть массивом имен полей (без каких-либо опций).
Обратите внимание, что по умолчанию выделение пытается подсветить результаты в соответствии с полнотекстовым запросом. В общем случае, если вы не указываете поля для выделения, подсветка основывается на вашем полнотекстовом запросе. Однако, если вы указываете поля для выделения, подсветка происходит только если полнотекстовый запрос соответствует выбранным полям.
Параметр encoder может быть установлен в default или html. При установке в html, он сохраняет HTML-разметку при выделении. Это работает аналогично опции html_strip_mode=retain.
Опция highlight_query позволяет выделять текст на основе запроса, отличного от вашего поискового запроса. Синтаксис такой же, как в основном query.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "content": "one|robots" } },
"highlight":
{
"fields": [ "content"],
"highlight_query": { "match": { "*":"polite distance" } }
}
}{'aggregations': None,
'hits': {'hits': [{u'_id': u'1',
u'_score': 1788,
u'_source': {u'content': u'They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it. ',
u'title': u'Books one'},
u'highlight': {u'content': [u'. The robots remained at a <b>polite distance</b>, but their presence was a']}}],
'max_score': None,
'total': 1},
'profile': None,
'timed_out': False,
'took': 0}pre_tags и post_tags устанавливают открывающие и закрывающие теги для выделенных фрагментов текста. Они функционируют аналогично опциям before_match и after_match. Эти параметры необязательны, значения по умолчанию — <b> и </b>.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "*": "one|robots" } },
"highlight":
{
"fields": [ "content", "title" ],
"pre_tags": "before_",
"post_tags": "_after"
}
}Document: 1
title : Books one
content : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.
Highlight for content:
- They followed Bander. The before_robots_after remained at a polite distance,
- three into the room. before_One_after of the before_robots_after followed as well. Bander
- gestured the other before_robots_after away and entered itself. The
Highlight for title:
- Books before_one_afterno_match_size функционирует аналогично опции allow_empty. Если установлено в 0, это действует как allow_empty=1, позволяя возвращать пустую строку в качестве результата выделения, когда фрагмент не может быть сгенерирован. В противном случае будет возвращено начало поля. Этот параметр необязателен, значение по умолчанию — 1.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "*": "one|robots" } },
"highlight":
{
"fields": [ "content", "title" ],
"no_match_size": 0
}
}Document: 1
title : Books one
content : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.
Highlight for content:
- They followed Bander. The <b>robots</b> remained at a polite distance,
- three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander
- gestured the other <b>robots</b> away and entered itself. The
Highlight for title:
- Books <b>one</b>order устанавливает порядок сортировки извлеченных фрагментов. Если установлено в "score", извлеченные фрагменты сортируются по релевантности. Этот параметр необязателен и работает аналогично опции weight_order.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "*": "one|robots" } },
"highlight":
{
"fields": [ "content", "title" ],
"order": "score"
}
}Document: 1
title : Books one
content : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.
Highlight for content:
- three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander
- gestured the other <b>robots</b> away and entered itself. The
- They followed Bander. The <b>robots</b> remained at a polite distance,
Highlight for title:
- Books <b>one</b>fragment_size устанавливает максимальный размер фрагмента в символах. Он может быть глобальным или для каждого поля. Параметры для каждого поля переопределяют глобальные параметры. Это необязательный параметр со значением по умолчанию 256. Работает аналогично опции limit.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "*": "one|robots" } },
"highlight":
{
"fields": [ "content", "title" ],
"fragment_size": 100
}
}Document: 1
title : Books one
content : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.
Highlight for content:
- the room. <b>One</b> of the <b>robots</b> followed as well
- Bander gestured the other <b>robots</b> away and entered
Highlight for title:
- Books <b>one</b>number_of_fragments ограничивает максимальное количество фрагментов в результате. Как и fragment_size, может быть глобальным или для каждого поля. Это необязательный параметр со значением по умолчанию 0 (без ограничений). Работает аналогично опции limit_snippets.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "*": "one|robots" } },
"highlight":
{
"fields": [ "content", "title" ],
"number_of_fragments": 10
}
}Document: 1
title : Books one
content : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.
Highlight for content:
- They followed Bander. The <b>robots</b> remained at a polite distance,
- three into the room. <b>One</b> of the <b>robots</b> followed as well. Bander
- gestured the other <b>robots</b> away and entered itself. The
Highlight for title:
- Books <b>one</b>Опции, такие как limit, limit_words и limit_snippets, могут быть установлены как глобальные или для каждого поля. Глобальные опции используются в качестве ограничений для каждого поля, если они не переопределены параметрами для каждого поля. В примере поле title выделяется с настройками лимита по умолчанию, в то время как поле content использует другой лимит.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "*": "one|robots" } },
"highlight":
{
"fields":
{
"title": {},
"content" : { "limit": 50 }
}
}
}Document: 1
title : Books one
content : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.
Highlight for content:
- into the room. <b>One</b> of the <b>robots</b> followed as well
Highlight for title:
- Books <b>one</b>Глобальные ограничения также могут быть применены путем указания limits_per_field=0. Установка этой опции означает, что все объединенные результаты выделения должны находиться в пределах указанных ограничений. Недостаток в том, что вы можете получить несколько выделенных фрагментов в одном поле и ни одного в другом, если механизм выделения решит, что они более релевантны.
- JSON
- PHP
- Python
- Python-asyncio
- Javascript
- Java
- C#
- Rust
- TypeScript
- Go
POST /search
{
"table": "books",
"query": { "match": { "content": "and first" } },
"highlight":
{
"limits_per_field": false,
"fields":
{
"content" : { "limit": 50 }
}
}
}Document: 1
title : Books one
content : They followed Bander. The robots remained at a polite distance, but their presence was a constantly felt threat. Bander ushered all three into the room. One of the robots followed as well. Bander gestured the other robots away and entered itself. The door closed behind it.
Highlight for content:
- gestured the other robots away <b>and</b> entered itself. The door closedОператор CALL SNIPPETS создает фрагмент из предоставленных данных и запроса, используя настройки указанной таблицы. Он не может обращаться к встроенному хранилищу документов, поэтому рекомендуется использовать вместо него функцию HIGHLIGHT().
Синтаксис:
CALL SNIPPETS(data, table, query[, opt_value AS opt_name[, ...]])
data служит источником, из которого извлекается фрагмент. Это может быть либо одна строка, либо список строк, заключенных в фигурные скобки.
table относится к имени таблицы, которая предоставляет настройки обработки текста для генерации фрагментов.
query — это полнотекстовый запрос, используемый для построения фрагментов.
opt_value и opt_name представляют опции генерации фрагментов.
- SQL
CALL SNIPPETS(('this is my document text','this is my another text'), 'forum', 'is text', 5 AS around, 200 AS limit);+----------------------------------------+
| snippet |
+----------------------------------------+
| this <b>is</b> my document <b>text</b> |
| this <b>is</b> my another <b>text</b> |
+----------------------------------------+
2 rows in set (0.02 sec)Большинство опций такие же, как в функции HIGHLIGHT(). Однако есть несколько опций, которые можно использовать только с CALL SNIPPETS.
Следующие опции можно использовать для подсветки текста, хранящегося в отдельных файлах:
Эта опция, при включении, рассматривает первый аргумент как имена файлов, а не данные для извлечения сниппетов. Указанные файлы на стороне сервера будут загружены для данных. Для параллелизации работы при включении этого флага будет использовано до max_threads_per_query рабочих потоков на запрос. Значение по умолчанию — 0 (нет ограничения). Для распределения генерации сниппетов между удалёнными агентами, вызывайте генерацию сниппетов в распределённой таблице, содержащей только одного(!) локального агента и нескольких удалённых. Опция snippets_file_prefix используется для генерации итогового имени файла. Например, если searchd сконфигурирован с snippets_file_prefix = /var/data_, а в качестве имени файла предоставлен text.txt, сниппеты будут сгенерированы из содержимого файла /var/data_text.txt.
Эта опция работает только с распределённой генерацией сниппетов с удалёнными агентами. Исходные файлы для генерации сниппетов могут быть распределены между разными агентами, и основной сервер объединит все безошибочные результаты. Например, если у одного агента распределённой таблицы есть file1.txt, у другого — file2.txt, и вы используете CALL SNIPPETS с обоими этими файлами, searchd объединит результаты агентов, так что вы получите результаты как из file1.txt, так и из file2.txt. Значение по умолчанию — 0.
Если опция load_files также включена, запрос вернёт ошибку, если какой-либо из файлов недоступен где-либо. Иначе (если load_files не включена), для всех отсутствующих файлов будут возвращены пустые строки. Searchd не передаёт этот флаг агентам, поэтому агенты не будут генерировать критическую ошибку, если файл не существует. Если вы хотите быть уверены, что все исходные файлы загружены, установите обе опции load_files_scattered и load_files в 1. Если отсутствие некоторых исходных файлов на некоторых агентах некритично, установите только load_files_scattered в 1.
- SQL
CALL SNIPPETS(('data/doc1.txt','data/doc2.txt'), 'forum', 'is text', 1 AS load_files);+----------------------------------------+
| snippet |
+----------------------------------------+
| this <b>is</b> my document <b>text</b> |
| this <b>is</b> my another <b>text</b> |
+----------------------------------------+
2 rows in set (0.02 sec)