Конференция "Прочее" » Помогите исправить багу в скрипте поисковика
 
  • xayam © (31.08.08 16:00) [40]
    народ давайте активнее, что еще надо в функциональность добавить? Кроме поиска по сообщениям (это я уже знаю)
  • ketmar © (31.08.08 16:43) [41]
    >[40] xayam © (2008-08-31 16:00:00)
    шлюх и блэкджэк.

    ---
    Understanding is not required. Only obedience.
  • xayam © (31.08.08 17:06) [42]
    любой каприз за Ваши деньги))
  • xayam © (31.08.08 20:59) [43]
    еще такая проблема. Как в php получить в строку из html-файла  текст без форматирования (без тегов, без атрибутов, только отображаемый текст), чтобы сделать индексатор файла? Или как-то по-другому делают?
  • antonn © (31.08.08 22:05) [44]
    strip_tags()
  • antonn © (31.08.08 22:10) [45]
    хотя я предпочитаю хранить в базе исходный текст, а не html :)
    и кешировать результаты поиска на некоторое время, чтобы лазия по страницам не искать снова и снова
  • xayam © (31.08.08 22:17) [46]

    > antonn ©   (31.08.08 22:05) [44]
    > strip_tags()

    угу, уже нашел.
  • xayam © (31.08.08 23:00) [47]

    > antonn ©   (31.08.08 22:10) [45]

    че то регулярные выражения подзабыл, как выделять русские/английские слова для индексирования? У меня получилось так
    preg_match_all("|[a-zA-Zа-яА-Я0-9]*|", $contents, $out, PREG_PATTERN_ORDER);

    но не работает
  • xayam © (31.08.08 23:35) [48]
    точней вот так работает

     $count = preg_match_all("/[a-zA-Z0-9_а-яА-Я]{4,}/i", $contents, $out, PREG_PATTERN_ORDER);
     if ($count)
     for ($i = 0; $i < $count; $i++)
        echo  $out[0][$i].'<br />';

    но с русскими буквами что-то не то, вопросики в некоторых местах выводит
  • antonn © (31.08.08 23:44) [49]
    чет не могу представить себе, как оно должно работать...
    а вообще... :)
    setlocale( LC_CTYPE, array('ru_RU.CP1251', 'rus_RUS.1251'));

    $text="++155 %dd% text1 value1=sАвs Бяка text2 value2=aaa 10 asd";

    preg_match_all("#\b(\w+)#i", $text, $out, PREG_PATTERN_ORDER);

    print_r($out);

  • antonn © (31.08.08 23:51) [50]
    в принципе "i" там не нужна...
  • xayam © (31.08.08 23:58) [51]

    > antonn ©   (31.08.08 23:44) [49]

    так тоже вопросы, а вот так вопросов нет -

     $count = preg_match_all("/[a-zA-Zа-Я0-9_]{4,}/i", $contents, $out, PREG_PATTERN_ORDER);
      if ($count)
      for ($i = 0; $i < $count; $i++)
        echo  $out[0][$i].'<br />';

    только почему то русские слова неправильно отбираются, есть короче 4 символов и какие-то обрезанные попадаются
  • xayam © (01.09.08 00:00) [52]
    а как utf8 в локали установить?
  • antonn © (01.09.08 00:05) [53]
    в регулярке "/(ля-ля-ля)/U"
  • antonn © (01.09.08 00:06) [54]
    соответственно локаль вообще убери, это я на локалхосте эксперементировал :)
  • xayam © (01.09.08 00:10) [55]

    > antonn ©   (01.09.08 00:05) [53]
    > в регулярке "/(ля-ля-ля)/U"

    не помогает, еще и английские слова разбиваются на мелкие ((
  • xayam © (01.09.08 23:31) [56]
    в книжке вычитал что так нужно

    $count = preg_match_all("/\b[\w]{4,}\b/s", $contents, $out, PREG_PATTERN_ORDER);


    но тоже не работает с русскими буквами, че за фигня может быть?
  • antonn © (02.09.08 00:13) [57]

    > не помогает, еще и английские слова разбиваются на мелкие
    > ((

    а ты прям так пишешь: /[a-zA-Zа-Я0-9_]{4,}/i
    ? :)

    у меня
    #\b(\w{4,})#is

    выбирает слова от 4х символов, все работает...
  • xayam © (02.09.08 00:19) [58]

    > antonn ©   (02.09.08 00:13) [57]
    > у меня #\b(\w{4,})#is выбирает слова от 4х символов, все
    > работает...

    а у меня не работает
    работает более менее вот так

    $count = preg_match_all("/[\x80-\xFFa-z0-9_]{4,}/i", $contents, $out, PREG_PATTERN_ORDER);


    с английскими словами нормально, отбираются 4-хсимольные и длинее, а русские все подряд отбмраются и короче 4-х символов. Что за фигня?
  • xayam © (02.09.08 00:20) [59]
    еще вопрос, в php есть функция для удаления повторяющихся элементов из массива?
 
Конференция "Прочее" » Помогите исправить багу в скрипте поисковика
Есть новые Нет новых   [134448   +4][b:0][p:0.001]