форум vBSupport.ru > vBSupport.ru > How-Tos, Hints & Tips > Статьи, обзоры, каталоги
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
Luvilla
Гость
Default Поиск: настройки, использование, проблемы и решения

Терпение - добродетель.
Умение пользоваться поиском - добродетель в квадрате.
Умение правильно задать вопрос - добродетель в кубе. © Правила
Статья написана для администраторов/пользователей vB третей линейки, описание настроек и скрины - для третей линейки.
Многие из этих настроек и функций остались неизменны для vB четвёртой линейки, однако есть и отличия. Автор статьи нЕ собирается писать обзор по поиску для vB-4, поэтому, если есть желающие подробно расписать тонкости поиска в четвёрке - велкам.

Авторские права:
Статья написана для vBsupport.org.
Вы можете использовать любые части этой статьи, если Вам нужно написать подробный мануал по использованию поиска для Ваших юзеров. Ссылка на источник - желательна.
Вы можете перепечатать эту статью целиком или частично для публикации на форуме/разделе техподдержки vBulletin. В этом случае ссылка на источник - обязательна.
Спасибо за понимание.

Оглавление:

Внутренний поиск
I. [Админам] Настройки поиска.
II. [Пользователям] Как искать.
III. Возможные проблемы.
Внешний поиск
Полезные ссылки



= = = = = Внутренний поиск = = = = =

Аксиома: поиск в vB работает нормально.

Условие: поиск в vB работает нормально при нормальных настройках и прямой БД

Выводы:
1. Если Вы чего-то не можете найти - переформулируйте запрос
2. Если всё-таки не работает ("не ищет") - см. пункт I. [Админам] и пункт III. [Возможные проблемы]


I. [Админам] Настройки поиска.

I. 1. Посмотрите, какой поиск включен на Вашем форуме. Для новых линеек MySQL Fulltext включен по умолчанию.

Смотреть сюда:



MySQL Fulltext предпочтительнее: быстрее + у Вас не будут разрастаться две таблицы, используемые при собственной поисковой машине.



Если Вы до сих пор используете собственный vB-поиск, рекомендуется перейти на MySQL Fulltext. Если форум большой и посещаемый, на время выполнения перехода рекомендуется закрыть форум.


I. 2. Настройки - основные настройки поиска.

Как водится, в vB есть более чем одна настройка для поиска.
Попробуем посмотреть на каждую из них внимательно, где включается и на что влияет.
В дальнейшем описании предполагается, что у Вас включен поиск MySQL Fulltext, однако для некоторых настроек будет описано отличие между работой собственной поисковой машины и MySQL Fulltext.

Админка - Основные настройки - Поиск сообщений.

Поиск включён - понятно

Минимальное время между поисками - интересная настройка. Призвана снизить нагрузку, потому что любой поиск - достаточно нагрузочная операция. Однако - как же раздражает, когда пытаешься что-то найти, а тебе в ответ - "Этот форум требует ожидания ХХ секунд до нового поиска. Вам осталось подождать ХХ секунд до нового поиска"!
Как вариант, можно немного притормозить гостей, и дать возможность пользователям нормально юзать поиск. Для этого просто включите отделение людей от роботов для поиска
Админка - Основные настройки - Настройки отделения людей от роботов - поставьте галочку в пункте "Поиск". Так же, не забудьте, Админка - Управление группами пользователей - Гости - блок "Опции группы пользователей", пункт "Отделять людей от роботов при выполнении определённых действий" - Да.
А в настройке "Минимальное время между поисками" поставьте 0, юзера Вам будут благодарны.
Либо - как вариант - запретите гостям использовать поиск.

Найденных сообщений на страницу - это понятно, не ставьте здесь слишком большое число, 20-30 вполне разумно

Максимальное количество результатов поиска - не увлекайтесь. 100, максимум 200 результатов более, чем достаточно. Если результатов поиска слишком много, пусть юзер сузит критерии, всё равно он не будет пересматривать 500 результатов

Минимальная длина индексируемых слов - об этом поговорим подробно.
MySQL Fulltext по дефолту нЕ ищет слова короче 4-х символов. И Вы не можете поменять это значение в меньшую сторону. /ну, за исключением каких-то совершенно отбитых хостеров, которые с какого-то перепугу проставили у себя другие настройки, либо если у Вас свой сервер/
Собственная поисковая машина vB - да. Тут можно поставить три символа, и поиск будет проходить. Если Вы на ходу меняете это значение, не забудьте в Админка - Обслуживание - Обновление счётчиков - выполнить "Перестроить индекс поиска". Обращаю Ваше внимание: операция грузит сервак нипадеццки)
Личные наблюдения: поиск трёх-буквенных слов нафик не нужен, кроме дурной нагрузки он ничего полезного не даёт.
Если на Вашем форуме часто используются трёхбуквенные слова, скажем, аббревиатуры, приучите юзеров ставить метки.

Автоматический поиск похожих тем - тоже подробно.
Это такое мутное место, что... ууууу.... причём "поиск похожих" - это не отдельный поисковый механизм, это дополнительная приблуда к MySQL, к движку vB отношения не имеет, народ на WP тоже бьётся головой ап стену в этом месте...
Так что если Вы хотите включить "отображение похожих тем" только из соображений "внутренняя перелинковка - хорошо для СЕО", лучше этого не делайте.
Если же Вам действительно нужно отображение похожих тем для удобства пользователей, читайте дальше. Внимательно.
Попробуем по порядку.
Поиск и запись "похожих" тем происходит в момент создания темы. "Похожесть" определяется по заголовку. При создании темы движок смотрит, есть ли заголовки с такими же словами, если есть - отмечает ИДы таких тем в специальном поле similar в таблице thread. Во вновь созданной теме будет выведен список тем с "похожими" заголовками. И здесь будут выведены только темы, созданные ранее. В обратную сторону этот поиск не работает, то есть, в старых темах это новая, "похожая", не добавится. Чтобы добавить "похожие" темы в ранее созданные темы, Админка - Обслуживание - Обновление счётчиков - Перестроить похожие темы.
Так же обратите внимание: если какие-то из тем будут переименованы, причём кардинально, в заголовке не останется ни одного старого слова - если эти темы уже записаны как "похожие", они будут продолжать выводиться в showthread как похожие, пока Вы не обновите счётчики.
При физическом удалении темы её ИД всё равно остаётся в поле similar в таблице thread, пока Вы не обновите счётчики

При обработке "похожих" тем совершаются хитрые подсчёты score - теоретически, это пункт "Критерий релевантности похожих тем" в основных настройках... практически - менять его в настройках смысла особого нет, так как в файле насмерть прописано
Code:
if ($thread['score'] > 4)
Подсчёт этот производится "на лету", каждый раз при создании новой темы, и нигде не хранится.
На score влияет длина слов, количество слов в заголовке и количество похожих слов в разных заголовках. То есть, темы, у которых совпадает более одного длинного слова в заголовке, выводятся в списке "похожих" без особых проблем.
С короткими словама возможны разные казусы...

вот скрин из ПМА:



Все темы созданы в одном разделе, у всех в заголовках присутствует слово "темо", ни одна из них не выводится в "списке похожих" - у них score 2 с копейками.
Причём, что забавно, пока этих тем было две-три, они выводились. Когда их стало больше, их score упал и выводиться они перестали.
Выводы делайте сами... для себя я решила, что вправить файл - проще, чем отвечать юзерам на вопросы, почему темы не показываются.
Файл includes/functions_search.php, где-то в районе 374 строки, если сменить эту 4 на 2 (можно и 1) - "похожие" темы будут находиться активнее)


Админка - Основные настройки - Опции поиска сообщений (встроенный поиск форума)

Пункт "Слова, обязательно индексируемые поиском" имеет силу, только если Вы используете собственную поисковую машину vB. Если у Вас включен поиск MySQL Fulltext - пропустите этот пункт.

Пункт "Разрешить маски при поиске" - Да, разрешайте юзерам использовать * при поиске. В русском (украинском, белорусском...) языке с его склонениями, спряжениями, временами и родами вбивать в поиск все возможные словоформы терпения может и не хватить; а вот заменить окончание звёздочкой и получить выдачу всех словоформ сразу - вполне грамотный подход.
Обратите внимание: вариант *се* => посеребренный будет в выдаче поиском только при использовании собственной поисковой машины vB. Ну а вариант се* => сервер, сегодня, седло будет и при MySQL, и при собственном поиске.


Админка - Основные настройки - Опции релевантности поиска (встроенный поиск форума)
Эта настройка касается только встроенного поиска. Можете с ней не заморачиваться.


По основным настройкам это - всё. Однако... не расслабляйтесь! Есть ещё несколько моментов.


I. 3. Настройки - дополнительные настройки поиска.

Админка - Разделы и модераторы - Управление разделами.
Открываем на редактирование любой раздел.
Блок "Новые сообщения", пункт "Индексировать новые сообщения в поиске". При установленном "Нет" темы и сообщения из этого раздела не будут попадать в выдачу, причём ни в какую: ни при поиске текста заголовка/поста - "Извините, нет совпадений. Попробуйте указать другие ключевые слова", ни из профиля "найти все сообщения пользователя".
Но в "Новых сообщениях" темы из этого раздела выводиться будут.

Админка - Разделы и модераторы - Права в разделах.
Откройте на редактирование группу в любом разделе
Блок "Разрешения поиска по форуму" - Может искать в разделе. При выставленном Нет темы из этого раздела не будут выводиться юзерам этой группы при просмотре "Новых сообщений" (или "Сообщений за день"). Так же будет недоступен и поиск по тексту заголовка/поста

Админка - Основные настройки - Профиль пользователя, пункт "Показывать последнее сообщение в профиле?" Прочитайте, там написано, что включение этой опции изрядно грузит сервер. От себя добавлю, что смысла в этой фишке слишком мало, чтобы ею грузить сервак; кроме того, по неведомой мне причине, она иногда откровенно глючит.

Админка - Группы пользователей - Управление группами пользователей
Блок "Разрешения поиска по форуму"
Пункт "Может использовать логический поиск" - обратите внимание на комментарий, "Может быть применён только при включенном полном поиске текста" (собственно, при включенной собственной поисковой машине этого пункта просто нет в настройках) - подробно.
"Да" в этой настройке даёт возможность:
- искать по маске, то есть, с использованием звёздочки *
- искать словосочетания
"Нет" в этой настройке:
- не позволит использовать *
- при вводе словосочетания в поиск в выдаче будут результаты для каждого из слов словосочетания отдельно


Метки

Админка - Основные настройки - Параметры использования меток
Все настройки здесь достаточно просты и не нуждаются в отдельных пояснениях.
Однако считаю необходимым обратить Ваше внимание вот на что...
Метки - афигенно шикарный механизм, позволяющий расширять поиск. Этот механизм с лихвой компенсирует выключение "поиска похожих тем", практически не создаёт никакой дополнительной нагрузки; позволяет юзерам быстро получить список тем по какому-то смысловому критерию.
Разумеется, только в том случае, если метки на Вашем форуме проставлены осмысленно.
Если же у Вас метки созданы по принципу "чтобы было", если Вы используете их не для удобства юзеров, а для всё той же пресловутой дополнительной перелинковки из соображений сеонизЬма - они превращаются в ненужный и неиспользуемый юзерами хлам.
Вдумайтесь, какова смысловая ценность меток
кто
что
чтобы
тот
этот
где
все
и прочая галиматья служебные слова? Иной раз ткнёшься в облако меток на форуме, а оно всё засрано, прошу простить за слово, такими вот "метками"... тьфу...


[продолжение следует...]
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
Luvilla
Гость
Default

= = = = = Внутренний поиск = = = = =

= = продолжение = =


II. [Пользователям] Как искать.

Поиск регистронезависимый - это значит, что не имеет значения, с большой или маленькой буквы Вы вводите искомое слово, найдутся все.
Поиск, как правило, не ищет слова короче четырёх символов, и не требуйте от Вашего администратора сделать невозможное.
Поиск, как правило, игнорирует, что буквы Е и Ё - это разные буквы.
Поиск игнорирует служебные символы внутри искомого слова, поэтому если Вы ищете "мур-мяу", поиск посчитает, что искомое слово слишком короткое.
Поиск не снабжён телепатическим модулем. Он не знает, что Вы имели в виду, он будет искать то, что Вы ввели в поисковую строку, буквально, то есть - буква-в-букву.


Внутренний поиск позволяет искать темы и сообщения.
Есть так называемый "Быстрый поиск" и есть "Расширенный".
Можно искать по форуму вообще; по конкретному разделу; внутри конкретной темы; задавать более сложные настройки в Расширенном поиске.
Кроме того, можно получить темы/сообщения конкретного пользователя.
Отдельно есть "поиск по метке".
При установленном "Спасибо за сообщения" добавляется поиск сообщений с благодарностями.

Теперь рассмотрим конкретные пункты.

II. 1. Быстрый поиск.

На любой странице форума Вы видите кнопку "Поиск". Нажмите на неё. Это и есть "Быстрый поиск". В выпадающем меню Вы увидите:



Строку, в которую нужно ввести поисковый запрос, а так же возможность выбрать, как Вы хотите получить результаты: как список тем или как список сообщений.
Здесь же есть возможность перейти в Расширенный поиск или поиск по метке.

В разделе Вы видите "Искать в этом разделе"



Это - быстрый поиск по конкретному разделу.
Как и для быстрого поиска по всему форуму, Вы можете отметить, выводить результаты в виде тем или в виде сообщений. Здесь же есть ссылка, переход к расширенному поиску.

И, наконец, в теме Вы видите "Поиск в этой теме"




II. 2. Расширенный поиск.

Нет смысла показывать скрин. Перейдите в расширенный поиск из любого меню поиска и внимательно прочитайте возможные настройки.

Здесь, после введения поискового запроса, Вы можете задать необходимые дополнительные параметры в блоке "Опции поиска":
- искать в сообщениях или только в заголовках;
- найти темы с префиксом: эта опция позволяет найти темы с префиксом или без него: при необходимости Вы можете, удерживая клавишу "Контрол" на клавиатуре, отметить мышкой несколько префиксов, и тогда поиск будет произведен во всех темах, содержащих отмеченные префиксы;
- задать опции поиска по темам с определённым количеством ответов, задать временной отрезок и критерии сортировки результата;
- здесь же, в правом блоке, можно указать, искать ли темы/сообщения от конкретного пользователя;
- и выбрать разделы, по которым производить поиск. Выбираем разделы так же, как и префиксы: удерживая клавишу "Контрол" на клавиатуре, отметить мышкой несколько разделов;
- если Вы хотите задать дополнительно поиск по метке из расширенного поиска, к Вашим услугам всплывающая подсказка. Начните вводить текст метки, после третьего символа Вам будет предложена подсказка, метки, начинающиеся с этих букв:




II. 3. Поиск по метке.

Здесь всё просто. Нажмите "Поиск по метке" из любого меню быстрого поиска, Вы попадёте на страницу с метками, облаком меток.
Просто кликните мышкой по интересующей Вас метке, и Вы получите список тем с этой меткой.
Внимание: в облаке выводятся не все метки, которые есть на форуме, а лишь некоторое количество.
Но это не значит, что нельзя найти сообщения по метке, которая не выведена в облаке. Начните вводить текст метки в поле для поиска, Вы получите подсказку, точно так же, как и в расширенном поиске:



Кроме того, Вы можете кликнуть мышкой по метке непосредственно в теме, где выводится эта метка. Вы получите список тем с этой же меткой.


II. 4. Поиск сообщений конкретного пользователя

Три варианта:
Из профиля этого конкретного пользователя, там есть ссылки "найти все сообщения" и "найти все темы"
Из расширенного поиска, это позволит Вам не только найти сообщения, но и указать, с каким словом искать
Из темы:




II. 5. Поиск по части слова

Поиск по части слова, он же - поиск по маске, "поиск со звёздочкой" - незаменимая вещь. Допустим, Вы хотите найти сообщение с каким-то конкретным словом, но Вы не помните, в какой форме было это слово.
В этом случае Вам достаточно набрать в строке поиска часть слова со звёздочкой вместо окончания.
Например, запрос репутаци* выдаст результаты для слов: репутация, репутации, репутацией, репутацию и даже малоупотребимых репутаций и репутациями.
Уточнение: "поиск со звёздочкой" может быть включен или выключен Вашим администратором.


II. 6. Поиск словосочетаний.

Если Вы точно помните, какое словосочетание было в нужной Вам теме/сообщении - можно искать словосочетание.
Обратите внимание: комбинируя поиск словосочетания и возможность поиска со звёздочкой, можно найти нужное даже в том случае, если Вы не помните со 100% точностью искомую формулировку
Например, запрос одноимённ* фильм* выдаст результаты:
одноимённым фильмом
одноименных фильмов
одноимённому фильму
Уточнение: поиск словосочетаний, так же, как и "поиск со звёздочкой", может быть включен или выключен Вашим администратором.


[продолжение следует...]
 
 
Luvilla
Гость
Default

= = = = = Внутренний поиск = = = = =

= = = Продолжение = = =

III. Возможные проблемы.

Какие могут быть проблемы с поиском? Одна-единственная: он не работает. Не ищет. Или ищет, но не находит искомого, выводит какие попало результаты.

Где искать источник этой проблемы?
Ответ: в базе данных. Точнее - в кодировке.
Если таблицы у Вас в 1252 (она же latin1), то не важно, в какой кодировке форум, будь то 1251 или утф - будут проблемы с поиском русских слов. Однако симптомы могут быть разными.

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

Вариант таблицы в latin1, форум в 1251. В БД - кракозябры с умляутами. Обычно поиск по сообщениям работает, как это ни странно. Но при попытке в мемберлисте отсортировать юзеров по какой-то букве выдаётся бред (если у Вас разрешены кириллические ники). Особенно много несоответствий получается при попытке получить сортировку по латинским E, C, L, O.
Возможны проблемы при установке некоторых чатов
(да, собственно, при "кривой" БД любой продукт, создающий свои таблицы/поля ставится криво)

Вариант таблицы в latin1, форум в UTF-8. В БД - кракозябры вида D%.
Смертельно для поиска. Тут может быть много нюансов, но суть одна: поиск не работает.
- вообще не находит русских слов, пишет "ничего не найдено"
- если в искомом слове есть буква "р" (и, не помню точно, кажется, э-ш-и) - то поиск проходит, результаты выдаются, но это отнюдь не искомые слова. Есть даже такое прикольное наблюдение: чтобы найти слово, например, "логопед", юзера на одном форуме учили друг друга, вбить в поиск слово "рлогопед" - и найдёшь то, что нужно!
Редкий случай: таблицы в UTF, форум в UTF. В БД - кракозябры вида P%. Обычно такое бывает после импекса или неправильного восстановления БД из бекапа, когда изначально правильную кодировку утф ещё раз конвертнули в утф (народное название "двойной утф")
Поиск при таком раскладе как бы даже работает, но с глюками и нет подсветки найденного слова.

Все вышеописанные варианты надо лечить, приводить БД в нормальный вид. Полезные ссылки - в конце статьи.

Другие проблемы, блиц:

- Юзера жалуются, что результаты поиска получаются не во всех разделах
- Проверяйте настройки: разделов и прав групп в разделах.

- У меня много дополнительных групп и много разделов, доступных только определённым группам. Как я могу быть уверен, что в результатах поиска никто не увидит лишнего?
- Если Вы используете штатные настройки прав, Вы можете быть абсолютно уверены: никто ничего лишнего не увидит. Если ограничения создаются каким-либо хаком - спрашивайте автора хака.

- При вводе одинаковой фразы в поле "ключевые слова" для супермодеров и других групп пользователей ключевые слова в результатах поиска выдаются по разному. При вводе простой фразы, допустим "купить слона", через пробел. Для остальных она так и будет выдаваться "купить слона", а для супер модеров - "купить, слона", через запятую.
- Ответ - в настройках группы, в блоке "Разрешения поиска по форуму", пункт "Может использовать логический поиск".



= = = = = Внешний поиск = = = = =

Внешний поиск отличается от внутреннего тем, что поиском искомого текста занимается не Ваш сервер, а сторонняя поисковая машина.
Поиск производится не внутри Вашей БД, а по страницам, проиндексированным тем или иным поисковиком (Google, Яндекс, прочее, см. Поисковики. Специфические, специализированные и прикольные).

Настройки расширенного поиска Google лично мне нравятся больше, чем у Яндекса. В Google можно указать ещё и исключаемые слова

Плюсы/минусы внешнего поиска:
+ нет ограничений по длине слова, хоть одну букву можно искать, пример: Ш
+ нет ограничений /ну, почти нет/ на количество выводимых результатов, сколько найдёт, столько и вывалит
+ Google, как и другим, абсолютно безразлично, какие символы у Вас в БД, он видит текст, выводимый в постах/темах, и его индексирует
+ если не указывать "точное соответствие", поиск будет и по словоформам искомого слова, безо всяких звёздочек
+ из кэша Google иногда можно извлечь довольно много интересного, в том числе и недавно физически удалённые темы/посты
- Поисковик = гость, индексирует только разделы, открытые для гостей
- результаты не всегда адекватны, особенно ссылки на страницы тем/разделов
- иногда сложно... почти нереально объяснить юзерам, как пользоваться расширенным поиском от Google
- Ваш проект, разумеется, должен быть хорошо проиндексирован, только в этом случае поиск будет полноценным



= = = = = Полезные ссылки = = = = =


Статьи по решению проблем с кодировками БД читайте в этом разделе http://vbsupport.ru/forum/forumdisplay.php?f=124


GTSearch: Google™ Custom Search Engine

[4.1.x] Яндекс для форума

[4.х.х] Use Google Custom Search In Navbar - Step By Step

[3.х.х] [Ajax] Проверка похожих тем при создании новой

[4.0.x] Проверка на наличие похожих тем перед созданием новой

[3.х.х] Модификация tags.php для поиска по нескольким меткам

Автоматическое создание меток в теме на основе морфологического анализа

[3.х.х] Search This Forum (OnMouseOver) - Поиск по разделам с главной страницы

[3.х.х] Find My Posts In A Thread - "Мои сообщения" в теме

Поиск по диапазону дат (платно, цена символическая)

Правильный поиск на форуме или как сделать поиск более удобным

Fine-Tuning MySQL Full-Text Search
 
 
Centurion
Эксперт
vBSSecurity
 
Centurion's Avatar
Default
0

Как добавить доп. форму поиска например от Яндекс, помимо Google?
 
 
Orfo
Знаток
Default
1

CenturioОффтоп
 
 
Centurion
Эксперт
vBSSecurity
 
Centurion's Avatar
Default
0

Orfo, это я понял что получить и вставить.
например google мне не нужен, куда вставить необходимо код яндекса, чтобы он был размещен как на картинке поиск google
 
 
Luvilla
Гость
Default

Блок Полезные ссылки в посте #3 обновлён
 
 
Luvilla
Гость
Default

Небольшое продолжение

Автоматический поиск похожих тем, четвёртая линейка, на примере 421

В принципе, сама фича "поиск похожих", не поменялась...
при создании новой темы выполняется поиск по заголовкам уже существующих тем, если что-то там находится и соответствует чему-то там, то ИД(ы) найденного записываются в таблицу thread, в поле similar

короткая версия: умом это не понять, если работает - хорошо, не работает - выключаем и не паримся

Длинная версия:
ищет она по MATCH
Quote:
Функция MATCH() выполняет поиск в естественном языке, сравнивая строку с содержимым текста (совокупность одного или более столбцов, включенных в индекс FULLTEXT). Строка поиска задается как аргумент в выражении AGAINST(). Поиск выполняется без учета регистра символов. Для каждой строки столбца в заданной таблице команда MATCH() возвращает величину релевантности, т.е. степень сходства между строкой поиска и текстом, содержащимся в данной строке указанного в списке оператора MATCH() столбца.

Когда команда MATCH() используется в выражении WHERE (см. пример выше), возвращенные строки столбцов автоматически сортируются, начиная с наиболее релевантных. Величина релевантности представляет собой неотрицательное число с плавающей точкой. Релевантность вычисляется на основе количества слов в данной строке столбца, количества уникальных слов в этой строке, общего количества слов в тексте и числа документов (строк), содержащих отдельное слово.
Источник: http://www.mysql.ru/docs/man/Fulltext_Search.html
то есть, в лунную ночь после дождичка что-то обязательно найдётся

Если в тройке мы говорили о файле /includes/functions_search.php, то в 4ке это /packages/vbdbsearch/coresearchcontroller.php

Code:
			SELECT searchgroup.groupid, MATCH(searchgroup_text.title) AGAINST ('$safetitle') AS score
			FROM " . TABLE_PREFIX . "searchgroup AS searchgroup JOIN " . TABLE_PREFIX . "searchgroup_text AS searchgroup_text ON
				(searchgroup.searchgroupid = searchgroup_text.searchgroupid)
			$hook_query_joins
			WHERE MATCH(searchgroup_text.title) AGAINST ('$safetitle') AND
				searchgroup.contenttypeid = $contenttypeid
				" . ($threadid ? " AND searchgroup.groupid <> $threadid" : "") . "
				$hook_query_where
			HAVING score > 4
			LIMIT 5
Для тех, кто обратил внимание на FULLTEXT и подумал о InnoDB: при инсталле для таблицы searchgroup_text прописано жёстко ENGINE = MyISAM, иначе, естественно, о каком FULLTEXT KEY могла бы идти речь

Ну так вот, нас во всём этом интересует один момент: как она определяет эту свою релевантность, и сколько её, релевантности, должно быть, чтобы тема определилась как "похожая"
в запросе читаем: HAVING score > 4
всё те же 4, как и в тройке, предсказуемо
только осмыслить, как это происходит на практике, не всегда возможно)

Некоторые практические упражнения в ПМА позволяют сделать предположение, что score одного слова - чуть больше двух, при условии, что количество символов в слове больше четырёх, и при условии, что тем с таким словом в заголовках - не много (две?)
Чем больше тем с искомым словом в заголовке, тем меньше score

Вот скрин из ПМА, запрос "Разное всякое", оба слова по 6 букв, и при полном совпадении тема "Разное всякое" получает score 3,475 и нЕ попадает в разряд "похожих":


(сорри за такой скрин, оригинал умер на сейвпике)

всего в выборке четыре темы
пока тем было две, score был около 4,5 и тема считалась похожей

===
Итого: к чему это я...
Прежде, чем включать эту довольно нагрузочную фичу на своём форуме, подумайте: как часто ваши пользователи создают темы с длинными словами в заголовке?
Прежде, чем паниковать "у меня не работает поиск похожих", проверьте сами, создав темы с совпадением в заголовке не менее двух слов, символов по 8-9 в каждом
Если очень сильно хочется, чтобы отображались похожие темы, а с длинными словами в заголовках - проблема, попробуйте изменить значение score
в указанном мной файле, в приведенном запросе, в строке HAVING score > 4 вместо 4 поставьте цифру поменьше, скажем, 2
После этого нужно в админке - обслуживание - обновить похожие темы. Точно так же, как и в тройке, после этого в каждой теме будут выведены все найденные похожие, а не только те, что создавались до публикации этой конкретной темы
 
 
viliksar
Продвинутый
 
viliksar's Avatar
Default
0

Оффтоп

viliksar добавил 11.02.2014 в 17:10
Я пробовал вводить похожих не менее двух слов в заголовке и в самой теме не менее 9 символов.

Так же попробовал изменить значение на HAVING score > 2 в файле coresearchcontroller.php

Я правильно понимаю, похожие темы должны появиться ниже заголовка (как в третьей линейке воблы)?

Last edited by viliksar : 02-11-2014 at 06:10 PM. Reason: Добавлено сообщение
 
 
Luvilla
Гость
Default

Quote:
Originally Posted by viliksar View Post
как в третьей линейке воблы
да

Quote:
Originally Posted by viliksar View Post
похожие темы должны появиться ниже заголовка
нет
штатно - вот так:


(сорри за такой скрин, оригинал давно умер на сейвпике)

одинаково в третей и четвёртой линейке

а при создании темы ниже заголовка - это хак
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 12:10 PM.


Powered by vBulletin® Version 3.5.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.