当前位置: 首页>>代码示例>>PHP>>正文


PHP SphinxClient::BuildExcerpts方法代码示例

本文整理汇总了PHP中SphinxClient::BuildExcerpts方法的典型用法代码示例。如果您正苦于以下问题:PHP SphinxClient::BuildExcerpts方法的具体用法?PHP SphinxClient::BuildExcerpts怎么用?PHP SphinxClient::BuildExcerpts使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SphinxClient的用法示例。


在下文中一共展示了SphinxClient::BuildExcerpts方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: excerpt

 /**
  * {@inheritdoc}
  */
 public function excerpt($query, $fields, \record_adapter $record, SearchEngineOptions $options = null)
 {
     if (null === $options) {
         $options = new SearchEngineOptions();
     }
     $this->applyOptions($options);
     $index = '';
     // in this case search is done on metas
     if ($options->getFields() || $options->getBusinessFieldsOn()) {
         if ($options->isStemmed() && $options->getLocale()) {
             $index = 'metadatas' . $this->CRCdatabox($record->get_databox()) . '_stemmed_' . $options->getLocale();
         } else {
             $index = 'metadatas' . $this->CRCdatabox($record->get_databox());
         }
     } else {
         if ($options->isStemmed() && $options->getLocale()) {
             $index = 'documents' . $this->CRCdatabox($record->get_databox()) . '_stemmed_' . $options->getLocale();
         } else {
             $index = 'documents' . $this->CRCdatabox($record->get_databox());
         }
     }
     $opts = ['before_match' => "[[em]]", 'after_match' => "[[/em]]"];
     $fields_to_send = [];
     foreach ($fields as $k => $f) {
         $fields_to_send[$k] = $f['value'];
     }
     return $this->sphinx->BuildExcerpts($fields_to_send, $index, $query, $opts);
 }
开发者ID:romainneutron,项目名称:Phraseanet,代码行数:31,代码来源:SphinxSearchEngine.php

示例2: autocomplete

 /** @Route("/autocomplete/{term}", name="autocomplete", options={"expose" = true}) */
 public function autocomplete($term)
 {
     if (mb_strlen($term, 'utf-8') > 2) {
         $term = $this->get('evrika.lingua_stem')->stem_string($term);
     }
     $words = explode(' ', $term);
     $query = implode('*|', $words) . '*';
     $s = new \SphinxClient();
     $s->SetServer("localhost", 9312);
     // должна быть запущена служба по порту: searchd --config /c/sphinx/shinx.cnf
     $s->SetMatchMode(SPH_MATCH_EXTENDED2);
     // SPH_MATCH_ALL will match all words in the search term
     $s->SetArrayResult(true);
     $s->SetLimits(0, 15);
     # получаем результаты поиска
     $s->SetFieldWeights(array('title' => 10, 'shortText' => 3, 'body' => 1));
     $data = $s->Query("@(title,shortText,body) {$query}", 'publication');
     $items = isset($data['matches']) ? $data['matches'] : array();
     # добавляем поле с подсветкой слов
     foreach ($items as &$item) {
         $h = $s->BuildExcerpts(array($item['attrs']['title']), 'publication', $query, array('around' => 100));
         $item['attrs']['h'] = $h[0];
     }
     return new JsonResponse($items);
 }
开发者ID:Quiss,项目名称:Evrika,代码行数:26,代码来源:SearchController.php

示例3: SphinxClient

<?php

require "spec/fixtures/sphinxapi.php";
$cl = new SphinxClient();
$cl->BuildExcerpts(array('10', '20'), 'index', 'word1 word2');
开发者ID:alpbs,项目名称:sphinx,代码行数:5,代码来源:excerpt_default.php

示例4: createExcerts

 public function createExcerts(array $docs, $index, $words, array $opts = array())
 {
     return $this->sphinxClient->BuildExcerpts($docs, $index, $words, $opts);
 }
开发者ID:jerrylsxu,项目名称:yii-sphinx,代码行数:4,代码来源:ESphinxConnection.php

示例5: SphinxClient

<?php

require "sphinxapi.php";
$cl = new SphinxClient();
$cl->BuildExcerpts(array('10', '20'), 'index', 'word1 word2', array('before_match' => 'before', 'after_match' => 'after', 'chunk_separator' => 'separator', 'limit' => 10));
开发者ID:gagoel,项目名称:sphinxsearch,代码行数:5,代码来源:excerpt_custom.php

示例6: while

    while ($row = $db->fetch_array($query)) {
        $row['lastpost'] = gmdate($dateformat . ' ' . $timeformat, $row['lastpost'] + $timeoffset * 3600);
        $key = $sp_res_order[$row['pid']];
        $postlist[$key] = $row;
        if (trim($row['ptitle']) != '') {
            $titles[$key] = $row['ptitle'];
        } else {
            $titles[$key] = 'RE:' . $row['ttitle'];
        }
        $contents[$key] = $row['content'];
    }
    //排序
    ksort($titles);
    ksort($postlist);
    ksort($contents);
    $sp_titles = $cl->BuildExcerpts($titles, $sp_hightlight_index, $sp_keyword, $sp_build_opts);
    $sp_contents = $cl->BuildExcerpts($contents, $sp_hightlight_index, $sp_keyword, $sp_build_opts);
    for ($i = 0, $l = count($contents); $i < $l; $i++) {
        $postlist[$i]['content'] = $sp_contents[$i];
        $postlist[$i]['title'] = $sp_titles[$i];
    }
    include template('search_sphinx');
} else {
    $threadlist = $titles = array();
    $query = $db->query("SELECT * FROM {$tablepre}threads WHERE tid IN ({$sp_find_ids})");
    // AND displayorder>='0'
    while ($thread = $db->fetch_array($query)) {
        $threadlist[$sp_res_order[$thread['tid']]] = procthread($thread);
        $titles[$sp_res_order[$thread['tid']]] = $thread['subject'];
    }
    $sp_titles = $cl->BuildExcerpts($titles, $sp_hightlight_index, $sp_keyword, $sp_build_opts);
开发者ID:junsgo,项目名称:sphinx-for-discuz,代码行数:31,代码来源:search_sphinx.inc.php

示例7: SphinxClient

<?php

require "spec/fixtures/sphinxapi.php";
$cl = new SphinxClient();
$cl->BuildExcerpts(array('10', '20'), 'index', 'word1 word2', array('exact_phrase' => true, 'single_passage' => true, 'use_boundaries' => true, 'weight_order' => true, 'query_mode' => true));
开发者ID:alpbs,项目名称:sphinx,代码行数:5,代码来源:excerpt_flags.php

示例8: array

<?php

//
// $Id$
//
require "sphinxapi.php";
$docs = array("this is my test text to be highlighted, and for the sake of the testing we need to pump its length somewhat", "another test text to be highlighted, below limit", "test number three, without phrase match", "final test, not only without phrase match, but also above limit and with swapped phrase text test as well");
$words = "test text";
$index = "test1";
$opts = array("before_match" => "<b>", "after_match" => "</b>", "chunk_separator" => " ... ", "limit" => 60, "around" => 3);
foreach (array(0, 1) as $exact) {
    $opts["exact_phrase"] = $exact;
    print "exact_phrase={$exact}\n";
    $cl = new SphinxClient();
    $res = $cl->BuildExcerpts($docs, $index, $words, $opts);
    if (!$res) {
        die("ERROR: " . $cl->GetLastError() . ".\n");
    } else {
        $n = 0;
        foreach ($res as $entry) {
            $n++;
            print "n={$n}, res={$entry}\n";
        }
        print "\n";
    }
}
//
// $Id$
//
开发者ID:gagoel,项目名称:sphinxsearch,代码行数:29,代码来源:test2.php

示例9: GetSnippet

 /**
  * Получаем сниппеты(превью найденых элементов)
  *
  * @param string $sText	Текст
  * @param string $sIndex	Название индекса
  * @param string $sTerms	Поисковый запрос
  * @param string $before_match	Добавляемый текст перед ключом
  * @param string $after_match	Добавляемый текст после ключа
  * @return array
  */
 public function GetSnippet($sText, $sIndex, $sTerms, $before_match, $after_match)
 {
     $aReturn = $this->oSphinx->BuildExcerpts(array($sText), Config::Get('module.search.entity_prefix') . $sIndex . 'Index', $sTerms, array('before_match' => $before_match, 'after_match' => $after_match));
     return $aReturn[0];
 }
开发者ID:lunavod,项目名称:bunker_stable,代码行数:15,代码来源:Sphinx.class.php

示例10: doSearch

 private function doSearch($q, $page)
 {
     global $wgOut;
     $mode = SPH_MATCH_ALL;
     $index = 'suggested_titles';
     $page_size = 20;
     $limit = 1000;
     $ranker = SPH_RANK_PROXIMITY_BM25;
     $host = 'localhost';
     $port = 9312;
     $cl = new SphinxClient();
     $cl->SetServer($host, $port);
     //$cl->SetConnectTimeout(1);
     $cl->SetSortMode(SPH_SORT_RELEVANCE);
     $cl->SetArrayResult(true);
     $cl->SetWeights(array('wst_title' => 5, 'wst_text' => 2));
     $cl->SetMatchMode($mode);
     $cl->SetRankingMode($ranker);
     $cl->SetLimits(($page - 1) * $page_size, $page_size, $limit);
     // don't search w/ leading "how to" if user added it
     $q_prime = preg_replace('@^\\s*how\\s+to\\s+@i', '', $q);
     $res = $cl->Query($q_prime, $index);
     $error = $res === false ? $cl->GetLastError() : '';
     $warning = $cl->GetLastWarning();
     /*$spelling = $this->getSpellingInfo($q);
     		if ($spelling) {
     			$res['spelling'] = $spelling;
     		} else {
     			$res['spelling'] = '';
     		}*/
     if (count($res['matches']) > 0) {
         $titles = $this->getInfo($res['matches']);
         $keys = array_keys($titles);
         $excerpts = $cl->BuildExcerpts($titles, 'suggested_titles', $q);
         foreach ($excerpts as $i => $excerpt) {
             $excerpts[$keys[$i]] = $excerpt;
             unset($excerpts[$i]);
         }
         foreach ($res['matches'] as $i => &$docinfo) {
             $id = $docinfo['id'];
             $docinfo['attrs']['excerpt'] = $excerpts[$id];
         }
     } else {
         $error = wfMsg('search-keywords-not-found', $q);
     }
     // construct paging bar
     $total = (int) ceil(1.0 * $res['total_found'] / $page_size);
     $paging = array();
     if ($page > 1) {
         $paging[] = 'prev';
     }
     if ($page > 1) {
         $paging[] = 1;
     }
     if ($page >= 5) {
         $paging[] = '...';
     }
     if ($page >= 4) {
         $paging[] = $page - 2;
     }
     if ($page >= 3) {
         $paging[] = $page - 1;
     }
     $paging[] = $page;
     if ($page < $total) {
         $paging[] = $page + 1;
     }
     if ($page + 1 < $total) {
         $paging[] = $page + 2;
     }
     if ($page + 2 < $total) {
         $paging[] = '...';
     }
     if ($page < $total) {
         $paging[] = 'next';
     }
     $vars = array('results' => $res, 'q' => $q, 'error' => $error, 'warning' => $warning, 'page' => $page, 'page_size' => $page_size, 'paging' => $paging);
     return $vars;
 }
开发者ID:biribogos,项目名称:wikihow-src,代码行数:79,代码来源:SSearch.body.php

示例11: sphinx_search_action


//.........这里部分代码省略.........
    }
    $sphinx = new SphinxClient();
    $sphinx->SetServer($PHORUM['mod_sphinx_search']['hostname'], $PHORUM['mod_sphinx_search']['port']);
    $sphinx->SetMatchMode($match_mode);
    // set the limits for paging
    $sphinx->SetLimits($arrSearch['offset'], $arrSearch['length']);
    // set the timeframe to search
    if ($arrSearch['match_dates'] > 0) {
        $min_ts = time() - 86400 * $arrSearch['match_dates'];
        $max_ts = time();
        $sphinx->SetFilterRange('datestamp', $min_ts, $max_ts);
    }
    // Check what forums the active Phorum user can read.
    $allowed_forums = phorum_api_user_check_access(PHORUM_USER_ALLOW_READ, PHORUM_ACCESS_LIST);
    // If the user is not allowed to search any forum or the current
    // active forum, then return the emtpy search results array.
    if (empty($allowed_forums) || $PHORUM['forum_id'] > 0 && !in_array($PHORUM['forum_id'], $allowed_forums)) {
        $arrSearch['results'] = array();
        $arrSearch['totals'] = 0;
        $arrSearch['continue'] = 0;
        $arrSearch['raw_body'] = 1;
        return $arrSearch;
    }
    // Prepare forum_id restriction.
    $search_forums = array();
    foreach (explode(',', $arrSearch['match_forum']) as $forum_id) {
        if ($forum_id == 'ALL') {
            $search_forums = $allowed_forums;
            break;
        }
        if (isset($allowed_forums[$forum_id])) {
            $search_forums[] = $forum_id;
        }
    }
    $sphinx->SetFilter('forum_id', $search_forums);
    // set the sort-mode
    $sphinx->SetSortMode(SPH_SORT_ATTR_DESC, 'datestamp');
    // do the actual query
    $results = $sphinx->Query($arrSearch['search'], $index);
    $res = $sphinx->GetLastWarning();
    if ($res) {
        error_log("sphinx_search.php: WARNING: {$res}");
    }
    $res = $sphinx->GetLastError();
    if ($res) {
        error_log("sphinx_search.php: ERROR: {$res}");
    }
    // if no messages were found, then return empty handed.
    if (!isset($results['matches'])) {
        $arrSearch['results'] = array();
        $arrSearch['totals'] = 0;
        $arrSearch['continue'] = 0;
        $arrSearch['raw_body'] = 1;
        return $arrSearch;
    }
    $search_msg_ids = $results['matches'];
    // get the messages we found
    $found_messages = phorum_db_get_message(array_keys($search_msg_ids), 'message_id', true);
    // sort them in reverse order of the message_id to automagically sort them by date desc this way
    krsort($found_messages);
    reset($found_messages);
    // prepare the array for building highlighted excerpts
    $docs = array();
    foreach ($found_messages as $id => $data) {
        // remove hidden text in the output - only added by the hidden_msg module
        $data['body'] = preg_replace("/(\\[hide=([\\#a-z0-9]+?)\\](.+?)\\[\\/hide\\])/is", '', $data['body']);
        $docs[] = htmlspecialchars(phorum_strip_body($data['body']));
    }
    $words = '';
    if (!empty($results['words'])) {
        $words = implode(' ', array_keys($results['words']));
    }
    $opts = array('chunk_separator' => ' [...] ');
    // build highlighted excerpts
    $highlighted = $sphinx->BuildExcerpts($docs, $excerpts_index, $words, $opts);
    $res = $sphinx->GetLastWarning();
    if ($res) {
        error_log("sphinx_search.php: WARNING: {$res}");
    }
    $res = $sphinx->GetLastError();
    if ($res) {
        error_log("sphinx_search.php: ERROR: {$res}");
    }
    $cnt = 0;
    foreach ($found_messages as $id => $content) {
        $found_messages[$id]['short_body'] = $highlighted[$cnt];
        $cnt++;
    }
    $arrSearch['results'] = $found_messages;
    // we need the total results
    $arrSearch['totals'] = $results['total_found'];
    if ($arrSearch['totals'] > 1000) {
        $arrSearch['totals'] = 1000;
    }
    // don't run the default search
    $arrSearch['continue'] = 0;
    // tell it to leave the body alone
    $arrSearch['raw_body'] = 1;
    return $arrSearch;
}
开发者ID:raul72,项目名称:phorum-sphinx_search,代码行数:101,代码来源:sphinx_search.php

示例12: MakePhaseSuggestion

             preg_match('/\\d+/', $k, $key);
             $key = $key[0];
             $words[$key]['docs'] = $v;
         }
     }
     $suggest = MakePhaseSuggestion($words, $term, $ln_sph);
     if ($suggest !== FALSE) {
         $app->response->redirect($app->urlFor('autocomplete', array('term' => $suggest)));
         $app->stop();
     }
     $result[] = ['label' => 'nothing found', 'url' => '#', 'type' => '', 'img' => '/skin/default/img/icon-label.png'];
 } else {
     $filterTypeMapping = array_flip($filterTypeMapping);
     $cl = new SphinxClient();
     foreach ($rows as $row) {
         $excerped = $cl->BuildExcerpts([$row['phrase']], 'slimpdautocomplete', $term);
         $filterType = $filterTypeMapping[$row['type']];
         $entry = ['label' => $excerped[0], 'url' => $filterType === 'track' ? '/searchall/page/1/sort/relevance/desc?q=' . $row['phrase'] : '/library/' . $filterType . '/' . $row['itemid'], 'type' => $filterType, 'typelabel' => $app->ll->str($filterType), 'itemid' => $row['itemid']];
         switch ($filterType) {
             case 'artist':
             case 'label':
                 $entry['img'] = '/skin/default/img/icon-' . $filterType . '.png';
                 break;
             case 'album':
             case 'track':
                 $entry['img'] = '/image-50/' . $filterType . '/' . $row['itemid'];
                 break;
         }
         $result[] = $entry;
     }
 }
开发者ID:daskleinesys,项目名称:slimpd,代码行数:31,代码来源:get.php

示例13: autocompleteAction

 /** @Route("/drugs/autocomplete/{type}/{term}", name="drug_autocomplete", options={"expose":true}) */
 public function autocompleteAction($type, $term)
 {
     $words = explode(' ', $term);
     $query = implode('*|', $words) . '*';
     $s = new \SphinxClient();
     $s->SetServer("localhost", 9312);
     // должна быть запущена служба по порту: searchd --config /c/sphinx/shinx.cnf
     $s->SetMatchMode(SPH_MATCH_EXTENDED2);
     // SPH_MATCH_ALL will match all words in the search term
     $s->SetArrayResult(true);
     # получаем результаты поиска
     $data = $type == 'all' ? $s->Query("@(title) {$query} & @type=product|atc|company|molecule", 'autocomplete') : $s->Query("@(title) {$query} & @type={$type}", 'autocomplete');
     $items = isset($data['matches']) ? $data['matches'] : array();
     foreach ($items as &$item) {
         $h = $s->BuildExcerpts(array($item['attrs']['title']), 'autocomplete', $query, array('around' => 100));
         $item['attrs']['h'] = $h[0];
     }
     return new JsonResponse($items);
 }
开发者ID:Quiss,项目名称:Evrika,代码行数:20,代码来源:SearchController.php


注:本文中的SphinxClient::BuildExcerpts方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。