Spec-Zone.ru › MariaDB

Обзор Mroonga



После установки Mroonga (см. О Mroonga), его основное использование аналогично использованию обычного индекса полнотекстового поиска.



Например:


CREATE TABLE ft_mroonga(copy TEXT,FULLTEXT(copy)) ENGINE=Mroonga;

INSERT INTO ft_mroonga(copy) VALUES ('Once upon a time'),
    ('There was a wicked witch'), ('Who ate everybody up');

SELECT * FROM ft_mroonga WHERE MATCH(copy) AGAINST('wicked');
+--------------------------+
| copy                     |
+--------------------------+
| There was a wicked witch |
+--------------------------+

Оценки

Mroonga также может сортировать по весу. Например, сначала добавьте ещё одну запись:

INSERT INTO ft_mroonga(copy) VALUES ('She met a wicked, wicked witch');

Записи могут возвращаться по весу, например, недавно добавленная запись имеет два вхождения слова «wicked» и более высокий вес:

SELECT *, MATCH(copy) AGAINST('wicked') AS score FROM ft_mroonga 
   WHERE MATCH(copy) AGAINST('wicked') ORDER BY score DESC;
+--------------------------------+--------+
| copy                           | score  |
+--------------------------------+--------+
| She met a wicked, wicked witch | 299594 |
| There was a wicked witch       | 149797 |
+--------------------------------+--------+

Парсер

Mroonga позволяет задать другой парсер для поиска, указав парсер в CREATE TABLE в качестве комментария или, в более старых версиях, изменив значение системной переменной mroonga_default_parser.

Например:

CREATE TABLE ft_mroonga(copy TEXT,FULLTEXT(copy) COMMENT 'parser "TokenDelimitNull"') 
  ENGINE=Mroonga;, 

или

SET GLOBAL mroonga_default_parser = 'TokenBigramSplitSymbol';

Доступны следующие настройки парсера:

Настройка Описание
off Токенизация не выполняется.
TokenBigram Значение по умолчанию. Последовательные буквы, цифры или символы обрабатываются как токен.
TokenBigramIgnoreBlank Аналогично TokenBigram , но пробелы игнорируются.
TokenBigramIgnoreBlankSplitSymbol Аналогично TokenBigramSplitSymbol, но пробелы игнорируются.
TokenBigramIgnoreBlankSplitSymbolAlpha Аналогично TokenBigramSplitSymbolAlpha , но пробелы игнорируются.
TokenBigramIgnoreBlankSplitSymbolAlphaDigit Аналогично TokenBigramSplitSymbolAlphaDigit , но пробелы игнорируются.
TokenBigramSplitSymbol Аналогично TokenBigram , но последовательные символы не обрабатываются как токен, а токенизируются в биграммы.
TokenBigramSplitSymbolAlpha Аналогично TokenBigram , но последовательные буквы не обрабатываются как токен, а токенизируются в биграммы.
TokenDelimit Токенизация производится путем разделения по пробелам.
TokenDelimitNull Токенизация производится путем разделения по нулевым символам (\0).
TokenMecab Токенизация с использованием MeCab. Требуется, чтобы Groonga был собран с поддержкой MeCab.
TokenTrigram Токенизация в триграммы, но последовательные буквы, цифры или символы обрабатываются как токен.
TokenUnigram Токенизация в униграммы, но последовательные буквы, цифры или символы обрабатываются как токен.

Примеры

TokenBigram против TokenBigramSplitSymbol

TokenBigram не соответствует частичным символам, которые TokenBigramSplitSymbol соответствует, так как TokenBigramSplitSymbol не обрабатывает последовательные символы как токен.

DROP TABLE ft_mroonga;
CREATE TABLE ft_mroonga(copy TEXT,FULLTEXT(copy) COMMENT 'parser "TokenBigram"') 
  ENGINE=Mroonga;
INSERT INTO ft_mroonga(copy) VALUES ('Once upon a time'),   
  ('There was a wicked witch'), 
  ('Who ate everybody up'), 
  ('She met a wicked, wicked witch'), 
  ('A really wicked, wicked witch!!?!');
SELECT * FROM ft_mroonga WHERE MATCH(copy) AGAINST('!?');
Empty set (0.00 sec)

DROP TABLE ft_mroonga;
CREATE TABLE ft_mroonga(copy TEXT,FULLTEXT(copy) COMMENT 'parser "TokenBigramSplitSymbol"') 
  ENGINE=Mroonga;
INSERT INTO ft_mroonga(copy) VALUES ('Once upon a time'),   
  ('There was a wicked witch'), 
  ('Who ate everybody up'), 
  ('She met a wicked, wicked witch'), 
  ('A really wicked, wicked witch!!?!');
SELECT * FROM ft_mroonga WHERE MATCH(copy) AGAINST('!?');
+-----------------------------------+
| copy                              |
+-----------------------------------+
| A really wicked, wicked witch!!?! |
+-----------------------------------+

TokenBigram против TokenBigramSplitSymbolAlpha

DROP TABLE ft_mroonga;
CREATE TABLE ft_mroonga(copy TEXT,FULLTEXT(copy) COMMENT 'parser "TokenBigram"') 
  ENGINE=Mroonga;
INSERT INTO ft_mroonga(copy) VALUES ('Once upon a time'),   
  ('There was a wicked witch'), 
  ('Who ate everybody up'), 
  ('She met a wicked, wicked witch'), 
  ('A really wicked, wicked witch!!?!');
SELECT * FROM ft_mroonga WHERE MATCH(copy) AGAINST('ick');
Empty set (0.00 sec)

DROP TABLE ft_mroonga;
CREATE TABLE ft_mroonga(copy TEXT,FULLTEXT(copy) COMMENT 'parser "TokenBigramSplitSymbolAlpha"') 
  ENGINE=Mroonga;
INSERT INTO ft_mroonga(copy) VALUES ('Once upon a time'),   
  ('There was a wicked witch'), 
  ('Who ate everybody up'), 
  ('She met a wicked, wicked witch'), 
  ('A really wicked, wicked witch!!?!');
SELECT * FROM ft_mroonga WHERE MATCH(copy) AGAINST('ick');
+-----------------------------------+
| copy                              |
+-----------------------------------+
| There was a wicked witch          |
| She met a wicked, wicked witch    |
| A really wicked, wicked witch!!?! |
+-----------------------------------+
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не предварительно проверяется MariaDB. Мнения, информация и мнения, выраженные в этом содержании, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/mroonga-overview/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API