В этом руководстве вы узнаете, как выделять результаты поиска в Manticore Search. Вы можете извлечь выгоду из выделения результатов поиска, если хотите улучшить читабельность результатов поиска в вашем приложении или на веб-сайте.
Выделение позволяет получать фрагменты результатов поиска с выделенными совпадающими ключевыми словами. Это помогает улучшить опыт поиска в вашем приложении.
Введение
Вы можете выделять ключевые слова в тексте в Manticore Search, используя несколько методов.
- Инструкция CALL SNIPPETS позволяет получить список фрагментов из документов (называемых фрагментами), которые содержат совпадения. Она может использоваться отдельно от поискового запроса для выделения строки или списка строк. Вот пример:
CALL SNIPPETS('мой текст с ключевым словом', 'index', 'keyword');
- Функция SNIPPET() строит фрагмент из предоставленных данных и запроса, используя указанные настройки индекса. Эта функция в основном используется в операторе SELECT для выделения данного текста, значения поля или текста, полученного из другого источника с помощью UDF (пользовательской функции). Она может использоваться для выделения такого же запроса, как в условии соответствия, или другого — это на ваше усмотрение. Например:
SELECT SNIPPET(content,'camera') FROM index WHERE MATCH('camera');
- Функция HIGHLIGHT() может быть использована для выделения результатов поиска. Эта функция была добавлена в Manticore 3.2.2. Она упрощает выделение ключевых слов в ваших документах, когда вы храните их в Manticore, а не просто индексируете. Вот пример вызова:
SELECT HIGHLIGHT() FROM index WHERE MATCH('text feature');
Первые два CALL SNIPPETS
и SNIPPET()
позволяют получить список частей документов (называемых фрагментами), которые содержат совпадения с искомым ключевым словом. Последняя HIGHLIGHT()
извлекает все доступные поля из хранилища документов и выделяет их в соответствии с данным запросом. В отличие от SNIPPET()
, HIGHLIGHT()
поддерживает синтаксис полей в запросах.
Все три функции имеют одинаковые параметры выделения, с которыми мы ознакомим вас на следующих этапах. В этом руководстве мы покажем примеры использования HIGHLIGHT()
.
Предположим, у вас есть индекс под названием ‘highlight’ с следующими настройками:
index highlight
{
type = rt
path = highlight
rt_field = title
rt_field = content
rt_attr_uint = gid
stored_fields = title, content
index_sp = 1
html_strip = 1
}
Основное использование
Небольшой пример:
Сначала добавьте документ:
INSERT INTO highlight(title,content,gid) VALUES('Синтаксическое выделение','Синтаксическое выделение является функцией текстовых редакторов, используемых для программирования, скриптинга или языков разметки, таких как HTML. Эта функция отображает текст, особенно исходный код, в разных цветах и шрифтах в зависимости от категории терминов.[1] Эта функция упрощает написание на структурированном языке, таком как язык программирования или язык разметки, поскольку структуры и синтаксические ошибки визуально различимы. Выделение не влияет на значение текста; оно предназначено только для человеческих читателей.',1);
А затем выполните SELECT HIGHLIGHT()
:
SELECT HIGHLIGHT() AS h FROM highlight WHERE MATCH('text feature')\G
*************************** 1. row ***************************
h: Синтаксическое выделение является <b>функцией</b> <b>текстовых</b> редакторов, которые используются ... , таких как HTML. <b>Эта</b> <b>функция</b> отображает <b>текст</b>, особенно исходный код, в ... терминах.[1] Эта <b>функция</b> упрощает написание на структурированном ... не влияет на значение <b>текста</b>; оно предназначено ...
По умолчанию любые из совпадающих слов выделяются с помощью тега ‘bold’, и не более 5 слов выбираются вокруг каждого совпадения для формирования отрывка.
Отрывки по умолчанию разделяются ...
.
HTML-тег используется для выделения совпадений, так как фрагменты часто отображаются в HTML-контенте, но вы можете настроить поведение с помощью параметров “before_match”, “after_match”, “around” и “chunk_separator”. Например:
SELECT HIGHLIGHT({before_match='*',after_match='*',around=1,chunk_separator='###'}) AS h FROM highlight WHERE MATCH('text feature')\G
*************************** 1. row ***************************
h: ### a *feature* of *text*###. The *feature* displays *text*###] This *feature* facilitates### the *text* itself###
Контроль размера фрагмента
Настройки по умолчанию устанавливают лимит (по настройке с тем же именем - “limit”) в 256 символов как максимальный размер фрагмента. Вы можете изменить это так:
SELECT HIGHLIGHT({limit=10}) AS h FROM highlight WHERE MATCH('text feature')\G
*************************** 1. row ***************************
h: ... a <b>feature</b> ...
Другой лимит, который можно изменить, — это количество слов, включенных в фрагмент, которое определяется параметром “limit_words”:
SELECT HIGHLIGHT({limit_words=5},'content') AS h FROM highlight WHERE MATCH('text feature')\G
*************************** 1. row ***************************
h: ... . The <b>feature</b> displays <b>text</b>, especially ...
Также возможно ограничить количество отрывков, например, если мы хотим получить только один отрывок:
SELECT HIGHLIGHT({limit_passages=1}) AS h FROM highlight WHERE MATCH('text feature')\G
*************************** 1. row ***************************
h: ... languages, such as HTML. The <b>feature</b> displays <b>text</b>, especially source code, in ...
Поведение функции HIGHLIGHT()
по умолчанию состоит в том, чтобы возвращать найденные отрывки, разделенные определенным разделителем в пределах пространства, установленного лимитом.
Как возможно, что лимит может быть недостаточным для всех отрывков, мы можем получить только часть возможных отрывков.
Чтобы продемонстрировать это, давайте сначала добавим документ с более длинным текстом.
INSERT INTO highlight(title,content) values('wikipedia','Синтаксическая подсветка - это функция текстовых редакторов, которые используются для программирования, скриптов или разметки таких языков, как HTML. Эта функция отображает текст, особенно исходный код, разными цветами и шрифтами в соответствии с категорией терминов.[1] Эта функция облегчает написание на структурированном языке, таком как язык программирования или язык разметки, поскольку как структуры, так и синтаксические ошибки визуально различимы. Подсветка не влияет на значение самого текста; она предназначена только для человеческих читателей. Синтаксическая подсветка является формой вторичной нотации, поскольку подсветки не являются частью значения текста, а служат для его усиления. Некоторые редакторы также интегрируют синтаксическую подсветку с другими функциями, такими как проверка орфографии или сворачивание кода, в качестве вспомогательных средств для редактирования, которые внешни к языку. Содержимое 1Практические преимущества 2Поддержка в текстовых редакторах 3Элементы синтаксиса 3.1Примеры 4История и ограничения 5См. также 6Ссылки Практические преимущества Подсветка эффекта отсутствующего разделителя (после watch=false) в Javascript Синтаксическая подсветка является одной из стратегий для улучшения читабельности и контекста текста; особенно для кода, который занимает несколько страниц. Читатель может легко игнорировать большиеSections комментариев или кода, в зависимости от того, что он ищет. Синтаксическая подсветка также помогает программистам находить ошибки в их программе. Например, большинство редакторов выделяют строковые литералы другим цветом. Следовательно, заметить отсутствующий разделитель становится намного проще из-за контрастного цвета текста. Совпадение фигурных скобок (MATCHing) является еще одной важной функцией многих популярных редакторов. Это упрощает видение, была ли пропущена фигурная скобка, или находить соответствие фигурной скобки, на которой находится курсор, выделяя пару другим цветом. Исследование, опубликованное на конференции PPIG, оценивало влияние синтаксической подсветки на понимание коротких программ, установив, что наличие синтаксической подсветки значительно сокращает время, необходимое программисту для усвоения семантики программы.[2] Кроме того, данные, собранные с помощью глазомера в ходе исследования, показали, что синтаксическая подсветка позволяет программистам уделять меньше внимания стандартным синтаксическим компонентам, таким как ключевые слова. Поддержка в текстовых редакторах gedit поддерживает синтаксическую подсветку Некоторые текстовые редакторы также могут экспортировать цветную разметку в формате, подходящем для печати или для импорта в текстовые процессоры и другие виды программного обеспечения для форматирования текста; например, как HTML, колоризированную LaTeX, PostScript или RTF версию своей синтаксической подсветки. Существует несколько библиотек или "движков" для синтаксической подсветки, которые могут быть использованы в других приложениях, но сами по себе не являются полноценными программами, например, расширение Generic Syntax Highlighter (GeSHi) для PHP. Для редакторов, которые поддерживают более одного языка, пользователь обычно может указать язык текста, такой как C, LaTeX, HTML, или текстовый редактор может автоматически распознать его на основе расширения файла или просканировав содержимое файла. Эта автоматическая детекция языка может представлять потенциальные проблемы. Например, пользователь может захотеть редактировать документ, содержащий: более одного языка (например, при редактировании HTML-файла, который содержит встроенный Javascript-код), язык, который не распознается (например, при редактировании исходного кода для неясного или относительно нового языка программирования), язык, который отличается от типа файла (например, при редактировании исходного кода в файле без расширения в редакторе, который использует расширения файлов для определения языка). В этих случаях неясно, какой язык использовать, и документ может не быть подсвечен или быть подсвечен некорректно. Элементы синтаксиса Большинство редакторов с синтаксической подсветкой позволяют назначать разные цвета и стили текста десяткам различных лексических подэлементов синтаксиса. К ним относятся ключевые слова, комментарии, управляющие конструкции, переменные и другие элементы. Программисты часто сильно настраивают свои параметры, пытаясь показать как можно больше полезной информации, не усложняя чтение кода. ');
Теперь давайте подсветим это:
SELECT HIGHLIGHT({},'content') AS h FROM highlight WHERE MATCH('syntax')\G
*************************** 1. row ***************************
h: <b>синтаксическая</b> подсветка - это функция текстовых редакторов, которые используются для программирования, скриптов или разметки ... языка, чтобы как структуры, так и <b>синтаксические</b> ошибки были визуально различимы. Подсветка ...
*************************** 2. row ***************************
h: ... версия ее <b>синтаксической</b> подсветки. Существует несколько библиотек <b>синтаксической</b> подсветки ... подсвечены некорректно. <b>Элементы синтаксиса</b> Большинство редакторов с <b>синтаксической</b> подсветкой позволяют разные ... различные лексические подэлементы <b>синтаксиса</b>. К ним относятся ключевые слова, комментарии, ...
Для только что добавленного документа мы видим, что HIGHLIGHT() не дает нам всех отрывков. Мы можем увеличить лимит, чтобы преодолеть это, вопрос в том, насколько далеко. Если мы используем слишком высокое значение, HIGHLIGHT() возвращает полное тело содержимого (включая подсветку):
SELECT HIGHLIGHT({limit=10000},'content') AS h FROM highlight WHERE MATCH('syntax')\G
*************************** 1. row ***************************
h: <b>синтаксическая</b> подсветка - это функция текстовых редакторов, которые используются для программирования, скриптов или языков разметки, таких как HTML. Эта функция отображает текст, особенно исходный код, разными цветами и шрифтами в соответствии с категорией терминов.[1] Эта функция облегчает написание на структурированном языке, таком как язык программирования или язык разметки, поскольку как структуры, так и <b>синтаксические</b> ошибки визуально различимы. Подсветка не влияет на значение самого текста; она предназначена только для человеческих читателей.
*************************** 2. row ***************************
h: <b>синтаксис</b> выделение — это функция текстовых редакторов, которая используется для программирования, сценариев или разметки языков, таких как HTML. Эта функция отображает текст, особенно исходный код, различными цветами и шрифтами в зависимости от категории терминов.[1] Эта функция облегчает написание на структурированном языке, таком как язык программирования или язык разметки, так как как структуры, так и <b>синтаксические</b> ошибки визуально различимы. Выделение не влияет на значение самого текста; оно предназначено только для человеческих читателей. <b>синтаксис</b> выделение — это форма вторичной нотации, поскольку выделения не являются частью смысла текста, но служат для его усиления. Некоторые редакторы также интегрируют <b>синтаксический</b> анализ с другими функциями, такими как проверка орфографии или сворачивание кода, в качестве вспомогательных средств редактирования, которые не относятся к языку. Содержание 1 Практические преимущества 2 Поддержка в текстовых редакторах 3 Элементы синтаксиса 3.1 Примеры 4 История и ограничения 5 См. также 6 Ссылки Практические преимущества Выделение эффекта отсутствующего разделителя (после watch=false) в Javascript <b>синтаксис</b> выделение — это одна из стратегий, которая улучшает читаемость и контекст текста; особенно для кода, который занимает несколько страниц. Читатель может легко игнорировать большие разделы комментариев или кода в зависимости от того, что он ищет. <b>синтаксис</b> выделение также помогает программистам находить ошибки в их программе. Например, большинство редакторов выделяют строковые литералы другим цветом. Следовательно, обнаружить отсутствующий разделитель гораздо проще из-за контрастного цвета текста. Совпадение скобок — еще одна важная функция во многих популярных редакторах. Это упрощает понимание того, была ли пропущена скобка или найти совпадение скобки, на которой находится курсор, путем выделения пары другим цветом. Исследование, опубликованное на конференции PPIG, оценило влияние <b>синтаксического</b> выделения на понимание коротких программ, обнаружив, что наличие <b>синтаксического</b> выделения значительно сокращает время, необходимое программисту для усвоения семантики программы.[2] Дополнительно, данные, собранные с помощью глазомера во время исследования, предполагали, что <b>синтаксическое</b> выделение позволяет программистам обращать меньше внимания на стандартные синтаксические компоненты, такие как ключевые слова. Поддержка в текстовых редакторах gedit поддерживает <b>синтаксис</b> выделение Некоторые текстовые редакторы также могут экспортировать окрашенную разметку в формат, подходящий для печати или для импорта в текстовые процессоры и другие виды текстовых редакторов; например, как HTML, цветной LaTeX, PostScript или RTF версия своего <b>синтаксиса</b> выделения. Существует несколько библиотек <b>синтаксического</b> выделения или "движков", которые могут использоваться в других приложениях, но сами по себе не являются полноценными программами, например, расширение Generic <b>синтаксического</b> выделителя (GeSHi) для PHP. Для редакторов, поддерживающих несколько языков, пользователь обычно может указать язык текста, такой как C, LaTeX, HTML, или текстовый редактор может автоматически распознать его на основе расширения файла или путем сканирования содержимого файла. Эта автоматическая детекция языка представляет потенциальные проблемы. Например, пользователь может захотеть отредактировать документ, содержащий: более одного языка (например, при редактировании HTML-файла, который содержит встроенный код Javascript), язык, который не распознается (например, при редактировании исходного кода для obscura или сравнительно нового языка программирования), язык, который отличается от типа файла (например, при редактировании исходного кода в файле без расширения в редакторе, который использует расширения файлов для определения языка). В этих случаях неясно, какой язык использовать, и документ может не быть выделен или быть выделен неправильно. <b>синтаксические</b> элементы Большинство редакторов с <b>синтаксическим</b> выделением позволяют различным цветам и стилям текста быть присвоенными множеству различных лексических подэлементов <b>синтаксиса</b>. К ним относятся ключевые слова, комментарии, операторы управления потоком, переменные и другие элементы. Программисты часто сильно настраивают свои параметры в попытке показать как можно больше полезной информации, не делая код трудным для чтения.
Если мы хотим, чтобы просто выделялись отрывки, а не весь текст, мы должны использовать опцию “force_passages”:
SELECT HIGHLIGHT({limit=10000,force_passages=1},'content') AS h FROM highlight WHERE MATCH('syntax')\G
*************************** 1. строка ***************************
h: <b>синтаксис</b> выделение — это функция ... язык как структуры, так и <b>синтаксисы</b> ошибки визуально различимы. Выделение ...
*************************** 2. строка ***************************
h: <b>синтаксис</b> выделение — это функция ... язык как структуры, так и <b>синтаксисы</b> ошибки визуально различимы. Выделение ... предназначено только для человеческих читателей. <b>синтаксис</b> выделение — это форма ... его. Некоторые редакторы также интегрируют <b>синтаксис</b> выделение с другими функциями, такими как ... (после watch=false) в Javascript <b>синтаксис</b> выделение — это одна стратегия, ... что они ищут. <b>синтаксис</b> выделение также помогает программистам находить ... PPIG оценило влияние <b>синтаксиса</b> выделения на понимание ... , обнаружив, что наличие <b>синтаксиса</b> выделения значительно сокращает время ... Во время исследования предполагалось, что <b>синтаксис</b> выделение позволяет программистам обращать ... в текстовых редакторах gedit поддерживает <b>синтаксис</b> выделение Некоторые текстовые редакторы могут ... версия своего <b>синтаксиса</b> выделения. Существует несколько библиотек <b>синтаксического</b> выделения или ... сами по себе не являются полноценными программами, например, расширение Generic <b>синтаксического</b> выделителя (GeSHi) для PHP ... выделен неправильно. <b>синтаксические</b> элементы Большинство редакторов с <b>синтаксическим</b> выделением позволяют различным ... различным лексическим подэлементам <b>синтаксиса</b>. К ним относятся ключевые слова, комментарии, операторы управления ...
Еще один возможный способ получить весь текст с выделениями — это просто использовать limit=0:
SELECT HIGHLIGHT({limit=0},'content') AS h FROM highlight WHERE MATCH('text feature')\G
*************************** 1. row ***************************
h: Подсветка синтаксиса — это <b>функция</b> <b>текстовых</b> редакторов, которые используются для программирования, скриптинга или языков разметки, таких как HTML. Эта <b>функция</b> отображает <b>текст</b>, особенно исходный код, в разных цветах и шрифтах в зависимости от категории терминов.[1] Эта <b>функция</b> облегчает написание на структурированном языке, таком как язык программирования или язык разметки, так как как структуры, так и синтаксические ошибки визуально различимы. Подсветка не влияет на значение самого <b>текста</b>; она предназначена только для человеческих читателей.
*************************** 2. row ***************************
h: Подсветка синтаксиса — это <b>функция</b> <b>текстовых</b> редакторов, которые используются для программирования, скриптинга или языков разметки, таких как HTML. Эта <b>функция</b> отображает <b>текст</b>, особенно исходный код, в разных цветах и шрифтах в зависимости от категории терминов.[1] Эта <b>функция</b> облегчает написание на структурированном языке, таком как язык программирования или язык разметки, так как как структуры, так и синтаксические ошибки визуально различимы. Подсветка не влияет на значение самого <b>текста</b>; она предназначена только для человеческих читателей. Подсветка синтаксиса — это форма вторичной нотации, поскольку подсветки не являются частью значения <b>текста</b>, но служат для его усиления. Некоторые редакторы также интегрируют подсветку синтаксиса с другими функциями, такими как проверка орфографии или сворачивание кода, как средства редактирования, которые являются внешними по отношению к языку. Содержание 1 Практические преимущества 2 Поддержка в <b>текстовых</b> редакторах 3 Элементы синтаксиса 3.1 Примеры 4 История и ограничения 5 Смотрите также 6 Ссылки Практические преимущества Подсветка эффекта отсутствующего разделителя (после watch=false) в Javascript Подсветка синтаксиса — это одна из стратегий, чтобы улучшить читаемость и контекст <b>текста</b>; особенно для кода, который охватывает несколько страниц. Читатель может легко игнорировать большие секции комментариев или кода, в зависимости от того, что они ищут. Подсветка синтаксиса также помогает программистам находить ошибки в их программах. Например, большинство редакторов подсвечивают строковые литералы другим цветом. Следовательно, заметить отсутствующий разделитель значительно проще из-за контрастного цвета <b>текста</b>. Совпадение скобок — это еще одна важная <b>функция</b>, которая есть во многих популярных редакторах. Это позволяет легко увидеть, если скобка была пропущена, или найти соответствие скобки, на которой находится курсор, подсвечивая пару другим цветом. Исследование, опубликованное на конференции PPIG, оценивало влияние подсветки синтаксиса на понимание коротких программ, обнаружив, что наличие подсветки синтаксиса значительно снижает время, необходимое программисту для усвоения семантики программы.[2] Дополнительно, данные, собранные с помощью трекера глаз во время исследования, предполагали, что подсветка синтаксиса позволяет программистам уделять меньше внимания стандартным синтаксическим компонентам, таким как ключевые слова. Поддержка в <b>текстовых</b> редакторах gedit поддерживает подсветку синтаксиса Некоторые <b>текстовые</b> редакторы также могут экспортировать окрашенную разметку в формате, который подходит для печати или для импорта в текстовые процессоры и другие виды программного обеспечения для <b>форматирования текста</b>; например, как версия HTML, цветная LaTeX, PostScript или RTF своей подсветки синтаксиса. Существуют несколько библиотек подсветки синтаксиса или "движков", которые могут использоваться в других приложениях, но не являются полными программами сами по себе, например, расширение Generic Syntax Highlighter (GeSHi) для PHP. Для редакторов, которые поддерживают более одного языка, пользователь обычно может указать язык <b>текста</b>, такой как C, LaTeX, HTML, или <b>текстовый</b> редактор может автоматически распознать его на основе расширения файла или просканировав содержимое файла. Это автоматическое определение языка может представлять потенциальные проблемы. Например, пользователь может захотеть редактировать документ, содержащий: более одного языка (например, при редактировании HTML-файла, который содержит встроенный код Javascript), язык, который не распознается (например, при редактировании исходного кода для редкого или относительно нового языка программирования), язык, который отличается от типа файла (например, при редактировании исходного кода в файле без расширения в редакторе, который использует расширения файлов для определения языка). В этих случаях неясно, какой язык использовать, и документ может не быть подсвечен или быть подсвечен неправильно. Элементы синтаксиса Большинство редакторов с подсветкой синтаксиса позволяют применять разные цвета и <b>стили текста</b> к десяткам различных лексических подэлементов синтаксиса. К ним относятся ключевые слова, комментарии, конструкции управления, переменные и другие элементы. Программисты часто сильно настраивают свои параметры в попытке показать как можно больше полезной информации без затруднения чтения кода.
Удаление HTML и границы
Если наш индекс имеет обнаружение предложений, мы можем настроить подсветку так, чтобы она не создавала отрывки, которые пересекаются между предложениями:
SELECT HIGHLIGHT({},'content') AS h FROM highlight WHERE MATCH('html text')\G
*************************** 1. row ***************************
h: ... подсветка — это функция <b>текстовых</b> редакторов, которые используются для ... языков разметки, таких как <b>HTML</b>. Эта функция отображает <b>текст</b>, особенно исходный код ... не влияет на значение <b>текста</b>; она предназначена только ... 1 ряд в наборе (0.00 сек)
В этом примере мы видим отрывок ‘… языков разметки, таких как HTML. Эта функция отображает текст, особенно исходный код …’, который пересекается между предложениями.
С passage_boundary=sentence
этот отрывок будет разделен на два:
SELECT HIGHLIGHT({passage_boundary='sentence'},'content') AS h FROM highlight WHERE MATCH('html text')\G
*************************** 1. row ***************************
h: ... подсветка — это функция <b>текстовых</b> редакторов, которые используются для ... , или языков разметки, таких как <b>HTML</b>. ... Эта функция отображает <b>текст</b>, особенно исходный код, в разных ... не влияет на значение самого <b>текста</b>; она предназначена только ... 1 строка в наборе (0.05 сек)
Давайте добавим документ с HTML содержимым.
INSERT INTO highlight(title,content) values('html content','Идеи синтаксической подсветки значительно пересекаются с идеями <a title="Structure editor" href="/wiki/Structure_editor">редакторов, направляемых синтаксисом</a>. Один из первых таких классов редакторов для кода был редактор кода Уилфреда Хансена 1969 года, Эмили.<sup id="cite_ref-hansen_3-0" class="reference"><a href="#cite_note-hansen-3">[3]</a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4">[4]</a></sup> Он предоставлял расширенные независимые от языка <a title="Autocomplete" href="/wiki/Autocomplete">функции автозаполнения кода</a>, и в отличие от современных редакторов с синтаксической подсветкой, на самом деле делал невозможным создание синтаксически неправильных программ.');
По умолчанию подсветка будет обрабатывать HTML содержимое в зависимости от настроек индекса. Если удаление HTML включено в индексе, то также будет удалён результат HIGHLIGHT().
SELECT HIGHLIGHT({},'content') AS h FROM highlight WHERE MATCH('code class')\G
*************************** 1. row ***************************
h: ... из первых таких <b>классов</b> редакторов для кода был редактор кода Уилфреда Хансена ... 1969 <b>код</b> редактор, Эмили.[3][4 ... ] Он предоставлял расширенные независимые от языка <b>функции автозаполнения кода</b>, и в отличие от современных ...
Если мы хотим, чтобы подсветка также включала теги HTML, нам нужно установить “html_strip_mode=none”:
SELECT HIGHLIGHT({html_strip_mode='none'},'content') AS h FROM highlight WHERE MATCH('code class')\G
*************************** 1. row ***************************
h: ... первый такой <b>класс</b> редакторов для <b>кода</b> был Уилфред ... 1969 <b>код</b> редактор, Эмили. <sup id="cite_ref-hansen_3-0" style="background: #EBE909; color: #000000;">class=" ... sup id="cite_ref-4" <b>class</b>="reference"><a title="Autocomplete" href="#cite_note- ... ="><b>функции автозаполнения кода</b>, и ... 1 строка в наборе (0.05 сек)</a></sup>
Обратите внимание, что html_strip_mode=none
может подсвечивать слова, которые являются частью синтаксиса HTML, такие как ‘class’.
Чтобы защитить HTML-сущности, можно использовать режим сохранения, но он требует отсутствия лимита для фрагмента (limit=0):
SELECT HIGHLIGHT({html_strip_mode='retain',limit=0},'content') AS h FROM highlight WHERE MATCH('code class')\G *************************** 1. row *************************** h:
<p>Идеи синтаксической подсветки значительно пересекаются с идеями <a title="Structure editor" href="/wiki/Structure_editor">редакторов, направляемых синтаксисом</a>. Один из первых таких <b>классов</b> редакторов для <b>класса</b> был редактор кода Уилфреда Хансена 1969 года, Эмили.<sup id="cite_ref-hansen_3-0" class="reference"><a href="#cite_note-hansen-3">[3]</a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4">[4]</a></sup> Он предоставлял расширенные независимые от языка <a title="Autocomplete" href="/wiki/Autocomplete"><b>функции автозаполнения кода</b></a>, и в отличие от современных редакторов с синтаксической подсветкой, на самом деле делал невозможным создание синтаксически неправильных программ</p>
Этот учебник объяснил, как делать подсветку в Manticore Search с использованием функции HIGHLIGHT().
Интерактивный курс
<img src="HIghlighting-optimized.webp" alt="img">
Этот блог-пост доступен в форме интерактивного курса, который имеет командную строку, позволяющую вам экспериментировать с вышеупомянутыми примерами интерактивно.