За последние 24 часа нас посетили 20038 программистов и 1111 роботов. Сейчас ищут 514 программистов ...

А функция отображения фрагмента текста у вас какая?

Тема в разделе "Поисковая система php.ru", создана пользователем Vasiliya, 28 фев 2011.

  1. Vasiliya

    Vasiliya Активный пользователь

    С нами с:
    28 фев 2011
    Сообщения:
    5
    Симпатии:
    0
    Уж очень хорошо отображаются результаты поиска. Что за функция? А то мой модуль выдаёт только первые 500 символов из найденного текста в аннотации к ссылке, независимо от того есть в нём поисковое слово или оно далее следует
    PHP:
    1. function search_textfrag($text) {
    2.         $text = nl2br(stripslashes(substr($text, 0, 500)."..."));
    3.         return $text;
    4. }
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    mnogosearch заточеный
     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Vasiliya
    в качестве аватарки разрешены только личные фото
     
  4. Vasiliya

    Vasiliya Активный пользователь

    С нами с:
    28 фев 2011
    Сообщения:
    5
    Симпатии:
    0
    А, теперь, на php языке если можно, pls
    Ок, только у меня даже на паспорте нет фото размером 80х80px Если поможете с вопросом, то чтонибудь придумаю :)
     
  5. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Vasiliya
    специальные поисковые движки - mnoGoSearch, Solr, Sphinx
    в отличие от полнотекстового поиска в мускуле и других БД,
    позволяют индексировать с учётом морфологии языка
     
  6. Vasiliya

    Vasiliya Активный пользователь

    С нами с:
    28 фев 2011
    Сообщения:
    5
    Симпатии:
    0
    Gromo Спасибо, но мне не нужен сторонний движок, мне нужно просто изменить (хотя это уже совсем не просто, как оказалось) одну функцию в уже рабочем модуле. Я неправильно задала вопрос, родная функция (см. 1сообщение) не всегда выводит в краткой аннотации к найденной ссылке само поисковое слово (как на этом сайте или в гугл или итд), нужно вытащить из наденного текста именно тот фрагмент, который содержит переменную полученную из поля ввода поискового запроса, или если по русски - поисковую фразу. Я в курсе что изобретаю велосипед, но тем не менее мне это нужно
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
  8. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Vasiliya
    стандартными средствами этого добиться очень тяжело - придётся весь текст разбивать на куски,
    доступные для вывода в виде аннотации, затем делать поиск по данным кускам, и если найдено - выводить.
    к тому же искомое слово может встречаться во всём тексте, так что нужно ограничивать найденное
    кол-во совпадений до 1 части, а ещё нужно учитывать релевантность и вес слова во всём тексте.

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

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

    Vasiliya Активный пользователь

    С нами с:
    28 фев 2011
    Сообщения:
    5
    Симпатии:
    0
    Gromo да, готовые решения - это здорово, я знаю, у меня у самой в основе бесплатный cms, в принципе гугл поиск вполне даже очень хороший (результат накладывается на открытую страницу, оч удобно), но и скрипт который изначально был в этом движке, тоже хороший, а самое главное родной. Повозиться с ним для обучения очень полезно. Мне на одном форуме посоветовали воспользоваться preg_match_all, говорят с её помощью можно вытащить всё что угодно. Я написала регулярное выражение и думаю, что неправильно, потому что тогда во всех аннотациях - 0...

    Пусть без релевантности, хотябы 200 символов, но с искомым словом среди них, всё таки приятней чем просто какойто левый текст!
     
  10. Vasiliya

    Vasiliya Активный пользователь

    С нами с:
    28 фев 2011
    Сообщения:
    5
    Симпатии:
    0
    If you want something done, do it yourself
    Сделала, пусть это далеко и не mnoGoSearch, Solr, Sphinx, но выдаёт с первой попавшейся поисковой фразы и последующие после неё 500 символов, очень простой до смешного и короткий код

    PHP:
    1. function search_textfrag($text) {
    2.         $text = nl2br(stripslashes(substr(stristr($text, $_GET['stext']), 0, 500)."..."));
    3.         return $text;
    4. }
    можно ещё сделать алтернативу длины фрагмента (excerpt)

    PHP:
    1. function search_textfrag($text) {
    2.         $text = nl2br(stripslashes(substr(stristr($text, $_GET['stext']), 0, $_GET['chars'])."..."));
    3.         return $text;
    4. }
    Спасибо всем за информацию