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

Searching in Vietnamese with Manticore Search

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 базовая и включает:

  • Diacritics normalization - Работает автоматически
  • Basic tokenization - Корректно обрабатывает вьетнамские символы
  • No Vietnamese stemming - Формы слов не нормализуются (например, "tôi", "tôi", "tôi" рассматриваются как разные)
  • No Vietnamese stopwords - Общие слова, такие как "của", "và", "là", по умолчанию не фильтруются
  • No advanced morphology - Нет лемматизации на основе словаря

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

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

  1. Use the default charset_table: Нет необходимости настраивать, если только у вас нет особых требований
  2. Create custom stopwords if needed: Вы можете создать файл стоп-слов для фильтрации общих вьетнамских слов, таких как "của", "và", "là", "với" и т.д.
  3. Test your queries: Всегда проверяйте оба варианта — с диакритикой и без неё — чтобы убедиться, что поиск работает как ожидается
  4. Consider preprocessing: Для получения лучших результатов вы можете нормализовать текст перед индексацией (например, обработка вариантов слов)

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

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

Заключение

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

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

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