mysql-fulltext index - что такое режим естественного языка

У меня есть вопрос относительно этой статьи: http://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html.

здесь я нашел такие запросы, как

SELECT * FROM articles
WHERE MATCH (title,body)
AGAINST ('database' IN NATURAL LANGUAGE MODE);

то, что я не понимаю, что такое режим естественного языка? Я нигде не нахожу точного определения.

может ли any1 предоставить определение? Как это работает?

1 ответов


полнотекстовый поиск на естественном языке MySQL направлен на сопоставление поисковых запросов с корпусом, чтобы найти наиболее релевантные совпадения. Предположим, у нас есть статья, содержащая "я люблю пирог", и у нас есть документы d1, d2, d3 (база данных в вашем случае). Документ 1 и 2 посвящены спорту и религии соответственно, а документ 3-пище. Ваш запрос

выберите * из статей, где матч (название,тело) против ("база данных" в ЕСТЕСТВЕННЫЙ ЯЗЫК MODE);

вернет d3, а затем d2,d1 (случайный порядок d2, d1 в зависимости от того, который больше равен статье), потому что d3 соответствует статье лучше всего.

базовый алгоритм, используемый MYSQL, вероятно, является алгоритмом TF-idf, где tf означает частоту термина, а idf-частоту обратного документа. tf, как говорится, просто количество раз, когда слово w в статье встречается в документе. idf основан на том, сколько документов слово происходит. Так что слова, которые происходят во многих документах не участвуют в определении наиболее представительного документа. Продукт TF * idf производит оценку, чем выше, тем лучше слово представляет документ. Таким образом, "пирог" будет происходить только в документе d3 и, таким образом, будет иметь высокий tf и высокий idf (поскольку это обратное). В то время как " the " будет иметь высокий tf, но низкий idf, который будет выходить из tf и давать низкий балл.

режим естественного языка MYSQL также поставляется с набором стоп-слов (the, a, some etc) и удаляет слова менее 4 букв. Что можно увидеть в ссылке, которую вы предоставили.

некоторые слова игнорируются в полнотекстовом поиске:

Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is three characters for

индексы поиска InnoDB или четыре символа для MyISAM. Вы можете контролировать отключение путем установки параметра конфигурации перед созданием индекс: innodb_ft_min_token_size параметр конфигурации для поиска InnoDB индексы, или ft_min_word_len для MyISAM.

Words in the stopword list are ignored. A stopword is a word such as “the” or “some” that is so common that it is considered to have

нулевой смысловой ценности. Есть встроенный список стоп-слов, но это может быть переопределено пользовательским списком. У stopword списки и обзоры параметры конфигурации различны для индексов поиска InnoDB и Движок MyISAM и близких. Обработка стоп-слов управляется конфигурацией параметры innodb_ft_enable_stopword, innodb_ft_server_stopword_table, и innodb_ft_user_stopword_table для индексов поиска InnoDB, и ft_stopword_file для MyISAM.