Перейти к контенту

Как мы ломали

  • записи
    24
  • комментариев
    147
  • просмотра
    16 233

Сфинкс


MiksIr

186 просмотров

Умеет брать информацию как из базы (SQL запрос в конфиге с поддержкой выборки "пачками"), так и из внешней программы (ожидает простой XML). Индексация быстра. Индекс представляет собой набор сортированных словарей и не подразумевает изменения - только полное перестроение. Однако, можно построить много индексов и операция слияния индексов (операция накладная, но менее чем запрашивать все данные с нуля). Т.е. строим один индекс по базе, новые данные постоянно переиндексируем во второй индекс (дельту) и переодически индексы сливаем. Дельт может быть несколько... например за месяц, за неделю, за день. Индексация быстрая... к примеру "total 13582 docs, 6422569 bytes, total 18.592 sec, 345452.15 bytes/sec, 730.54 docs/sec". Документ тут, конечно, пост на форуме.

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

Каждый документ состоит из набора полей - я использую три - заголовок, текст, метадата. В последнем лежат "фейковые" ключевые слова, например "forum55", "author1045". Хотите искать только в сообщениях определенного пользователя - пожалуйста "как я пил пиво @metadata author1045" или даже просто "как я пил пиво author1045" (конечно, реализацию эту можно скрыть в скрипте поиска). Так же реализуем поиск в наборе форумов.

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

Синтаксис запросов позволяет действительно искать (а не раздумывать - что ж это мне вывалилось).

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

Ну и работает все - только никак не налажу ротацию дельт - просто из-за времени.

0 комментариев


Рекомендуемые комментарии

Комментариев для отображения не найдено.

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.