⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.
blog-post

Поиск на вьетнамском языке в Manticore Search

author image
View as markdown

Manticore Search предоставляет базовую поддержку поиска на вьетнамском языке. Вьетнамский использует латинскую письменность с диакритическими знаками (акцентами), и Manticore автоматически обрабатывает эти знаки для базового сопоставления текста. Хотя это покрывает основы, следует отметить, что расширенные функции, такие как специфическое для вьетнамского стемминг или стоп-слова, не включены.

Быстрый старт

Вьетнамский поиск работает с настройками по умолчанию — специальная настройка не требуется! Просто создайте таблицу с параметром по умолчанию charset_table=non_cont:

CREATE TABLE vietnamese_content (
    id bigint,
    title text,
    content text
) charset_table='non_cont';

Автоматическая обработка диакритических знаков

Одной из ключевых особенностей поддержки вьетнамского языка в Manticore является автоматическая нормализация диакритических знаков. Это означает, что пользователи могут искать с диакритикой или без неё, и оба варианта будут совпадать:

  • «tiếng» соответствует «tieng» и наоборот
  • «Hà Nội» соответствует «Ha Noi» и наоборот
  • «đường phố» соответствует «duong pho» и наоборот

Это особенно полезно, потому что:

  • Пользователи часто вводят без диакритики для скорости
  • Разные методы ввода могут создавать разные комбинации диакритических знаков
  • Это обеспечивает лучший пользовательский опыт, будучи снисходительным к вариациям ввода

Пример использования

Создадим простой пример с вьетнамским содержимым:

-- Create table
CREATE TABLE vietnamese_news (
    id bigint,
    title text,
    body text
) charset_table='non_cont';

-- Insert some Vietnamese content
INSERT INTO vietnamese_news VALUES
(1, 'Tin tức về Hà Nội', 'Hà Nội là thủ đô của Việt Nam'),
(2, 'Tin tuc ve Ha Noi', 'Ha Noi la thu do cua Viet Nam'),
(3, 'Tiếng Việt trong công nghệ', 'Công nghệ thông tin phát triển nhanh'),
(4, 'Tieng Viet trong cong nghe', 'Cong nghe thong tin phat trien nhanh');

Теперь вы можете искать, используя любую форму:

-- Search with diacritics
SELECT * FROM vietnamese_news WHERE MATCH('Hà Nội');

Результат:

+------+--------------------------+-------------------------------------------+
| id   | title                    | body                                      |
+------+--------------------------+-------------------------------------------+
|    1 | Tin tức về Hà Nội        | Hà Nội là thủ đô của Việt Nam             |
|    2 | Tin tuc ve Ha Noi        | Ha Noi la thu do cua Viet Nam             |
+------+--------------------------+-------------------------------------------+
-- Search without diacritics - still matches!
SELECT * FROM vietnamese_news WHERE MATCH('Ha Noi');

Результат:

+------+--------------------------+-------------------------------------------+
| id   | title                    | body                                      |
+------+--------------------------+-------------------------------------------+
|    1 | Tin tức về Hà Nội        | Hà Nội là thủ đô của Việt Nam             |
|    2 | Tin tuc ve Ha Noi        | Ha Noi la thu do cua Viet Nam             |
+------+--------------------------+-------------------------------------------+

Как видите, оба запроса возвращают одинаковые результаты, демонстрируя, что Manticore автоматически обрабатывает нормализацию диакритических знаков.

Как это работает

Таблица кодировок non_cont Manticore (которая является настройкой по умолчанию) включает всесторонние сопоставления для вьетнамских диакритических знаков:

  • ă, â → a
  • ê → e
  • ô, ơ → o
  • ư → u
  • đ → d
  • Все тоновые знаки (à, á, ả, ã, ạ и т.д.) также нормализуются

Эти сопоставления применяются как при индексации, так и при поиске, обеспечивая согласованное совпадение независимо от того, как введён текст.

Ограничения

Поддержка вьетнамского языка в Manticore базовая и включает:

  • ✅ Нормализация диакритики — работает автоматически
  • ✅ Базовая токенизация — корректно обрабатывает вьетнамские символы
  • ❌ Нет стемминга для вьетнамского — формы слов не нормализуются (например, «tôi», «tôi», «tôi» рассматриваются как разные)
  • ❌ Нет стоп-слов для вьетнамского — частотные слова, такие как «của», «và», «là», по умолчанию не фильтруются
  • ❌ Нет продвинутой морфологии — нет лемматизации на основе словаря

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

Лучшие практики

  1. Используйте charset_table по умолчанию: Нет необходимости настраивать, если только у вас нет особых требований
  2. При необходимости создайте свои стоп-слова: Вы можете создать файл стоп-слов, чтобы отфильтровать частотные вьетнамские слова, такие как «của», «và», «là», «với» и т. д.
  3. Проверяйте запросы: Всегда проверяйте оба варианта — с диакритикой и без неё — чтобы убедиться, что поиск работает как ожидается
  4. Подумайте о предобработке: Для лучших результатов можно нормализовать текст перед индексацией (например, обрабатывать варианты слов)

Расширенная конфигурация

Если вам требуется чувствительное к регистру сопоставление или вы хотите сохранять диакритические знаки как отдельные символы, вы можете настроить charset_table. Однако для большинства сценариев поведение по умолчанию (совпадение с диакритикой и без неё) удобнее всего для пользователей.

Заключение

Manticore Search предоставляет базовую поддержку вьетнамского языка, которая охватывает наиболее распространённый сценарий: сопоставление текста с диакритикой и без неё. Это делает поиск более снисходительным, когда пользователи вводят без акцентов. Для простых поисковых приложений этого может быть достаточно. Однако для приложений, требующих продвинутой обработки вьетнамского языка (стемминг, морфологический анализ или сложное ранжирование релевантности), может потребоваться дополнить Manticore дополнительной предобработкой или рассмотреть другие решения.

Установить Manticore Search

Установите Manticore Search одной командой в Linux или macOS:

curl https://manticoresearch.com | sh

Для расширенных вариантов установки см. полное руководство по установке и документацию .

Установить Manticore Search