Проблемы с использованием индексации MySQL FULLTEXT для данных, связанных с программированием (SO Data Dump) - PullRequest
0 голосов
/ 15 сентября 2009

Я пытаюсь реализовать функцию поиска для доступного в автономном режиме StackOverflow и замечаю некоторые проблемы с использованием индексации FULLTEXT в MySQL.

В частности, по умолчанию индексирование FULLTEXT ограничено словами длиной от 4 до 84 символов. Такие термины, как «PHP» или «SQL» не будут соответствовать минимальной длине, и поиск этих терминов не даст результатов.

Можно изменить переменную, которая управляет минимальной длиной слова, которое должно быть проиндексировано (ft_min_word_len), но это общесистемное изменение, требующее перестроения индексов во всех базах данных. На случай, если другие найдут это приложение полезным, я бы предпочел, чтобы такие переменные были как можно более ванильными. На днях я обнаружил на этом сайте сообщение о том, что изменение этого значения в любом случае просто плохая идея.

Другая проблема связана с такими терминами, как «VB.NET», где, насколько я могу судить, период в середине термина разделяет его на два индексированных значения - VB и NET. Опять же, это означает, что поиск "VB.NET" ничего не даст.

Наконец, поскольку я делаю прямой дамп ежемесячных дампов на основе XML, все значения преобразуются в HTML-объекты, и я обеспокоен тем, что это может повлиять на мои результаты поиска.

Я нашел сообщение в блоге , в котором предпринимаются следующие действия:

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

То, что я хотел бы знать, это действительно ли лучшие обходные пути для этих проблем? Кажется, что полудублирование таблицы размером> 1 ГБ расточительно, но, возможно, это только я.

Кроме того, если бы кто-нибудь мог порекомендовать хороший сайт для понимания индексации FULLTEXT в MySQL, я был бы признателен. Чтобы этот вопрос не был слишком загроможден, пожалуйста, оставьте рекомендации сайта в комментариях к вопросу или напишите мне прямо на сайт в моем профиле пользователя).

Спасибо!

<ч /> Дополнительная информация:
Я думаю, что я должен уточнить пару вещей.

Я знаю, что "MySQL" ведет к предположению о "веб-приложении", но я здесь не к этому стремлюсь. Я мог бы установить Apache и PHP и запускать вещи таким образом, но я стараюсь держать это под контролем. Я могу использовать свой веб-сайт для игры с PHP, поэтому я не чувствую необходимости устанавливать его и на свой домашний компьютер. Я также надеюсь, что это может быть полезно и для других, и я не хочу заставлять кого-либо еще устанавливать кучу дополнительных утилит. Я пошел с MySQL, так как это было легко, и необходимость установки какой-либо БД была неизбежна.

Специфика проекта должна была быть:

  • Настольное приложение, написанное на C # (WinForms)
  • Бэкэнд MySQL

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

1 Ответ

0 голосов
/ 16 сентября 2009

Из того, что уже было сказано, я понимаю, что MySQL FullText не для вас;) Но зачем придерживаться MySQL? Попробуйте Сфинкс:

http://www.sphinxsearch.com/

Это решит большинство ваших проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...