2014-01-23 2 views
2

Я уверен, что должен быть способ поиска хэштегов с использованием полнотекстового индекса в таблице MyISAM. Настройка по умолчанию будет делать следующее:MySQL Полнотекстовый поиск hashtags (включая символ # в индексе)

textfield 
hashtag 
#hashtag 
#two #hashtag #hashtag 

SELECT * FROM table WHERE MATCH(textfield) AGAINST ('#hashtag') 
> | hashtag    | 
> | #hashtag    | 
> | #two #hashtag #hashtag | 

Хотя оно должно возвращать только 2-ю и 3-ю строки. Похоже, что hashtag рассматривается как разделитель слов, поэтому он «удаляется» до начала поиска. Что делать, чтобы включить индексирование и поиск терминов, содержащих # в качестве части слова?

ответ

2

Как указано под Fine-Tuning MySQL Full-Text Search:

Вы можете изменить набор символов, которые считаются символы слов несколькими способами, как описано в следующем списке. После внесения изменений перестройте индексы для каждой таблицы, содержащей любые индексы FULLTEXT. Предположим, что вы хотите рассматривать символ дефиса ('-') как символ слова. Используйте один из следующих методов:

  • Изменить источник данных MySQL: В storage/myisam/ftdefs.h, см true_word_char() и misc_word_char() макросы. Добавьте '-' к одному из этих макросов и перекомпилируйте MySQL.

  • Изменение файла набора символов: для этого не требуется перекомпиляция. Макрос true_word_char() использует таблицу «тип символа» для различения букв и цифр от других символов. , Вы можете отредактировать содержимое массива <ctype><map> в одном из XML-файлов набора символов, чтобы указать, что '-' является «письмом». Затем используйте заданный набор символов для ваших индексов FULLTEXT. Информацию о формате массива <ctype><map> см. В разделе Section 10.3.1, “Character Definition Arrays”.

  • Добавить новую сортировку для набора символов, используемую индексированными столбцами, и изменить столбцы для использования этой сортировки. Общие сведения о добавлении сопоставлений см. В разделе Section 10.4, “Adding a Collation to a Character Set”. Пример, характерный для полнотекстовой индексации, приведен в Section 12.9.7, “Adding a Collation for Full-Text Indexing”.

Смежные вопросы