Получить подобный поисковой системе фрагмент поискового тела, используя php - PullRequest
2 голосов
/ 12 ноября 2010

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

Мой Googlefoo не силен в этом вопросе, поэтому я надеюсь, что кто-то может включить меня в существующее решение.

Ответы [ 2 ]

2 голосов
/ 13 ноября 2010

В случае, если вы не хотите выделять ключевые слова в соответствии с рекомендациями батальона и хотите просмотреть соответствующий абзац / содержание, я бы сделал следующее:

$snippets = array();
foreach ($matches as $i => $match) {
    $pos = strpos($match, $searchTerm);

    $buffer = 30; // characters before and after the search term is found
    // start index - 0 or 30 characters before instance of search term
    $start = ($pos - $buffer >= 0) ? $pos - $buffer : 0;
    // end index - 30 characters after instance of search term or the length of the match
    $end = $start + strlen($searchTerm) + $buffer;
    $end = ($end >= strlen($match)) ? strlen($match) : $end;

    $snippets[$i] = substr($match, $start, $end);
}
0 голосов
/ 13 ноября 2010

Вы имеете в виду подсветку поиска:

str_replace(
    $searchTerm,  
    '<span class="searchHighlight">'.$searchTerm.'</span>',
    $searchString);

Это необходимо сделать на простом тексте, в противном случае вы можете столкнуться с некоторыми сложностями, упомянутыми в статье A List Apart Повышение удобства использования с помощью выделения условий поиска.;

Вы можете попробовать подход, основанный на Javascript, но подход на основе PHP / HTML был бы более доступным.

...