Changeset 1190

Show
Ignore:
Timestamp:
07/04/10 10:50:08 (3 years ago)
Author:
d0nut
Message:

finished solr RC 1

Location:
solr
Files:
10 added
8 modified

Legend:

Unmodified
Added
Removed
  • solr/de.xml

    r1183 r1190  
    44        <category name="wcf.acp.option"> 
    55                <item name="wcf.acp.option.solr_url"><![CDATA[Solr]]></item> 
    6                 <item name="wcf.acp.option.solr_url.description"><![CDATA[Zum Beispiel http://solr.dein-server.de:80/solr/nutch/]]></item> 
     6                <item name="wcf.acp.option.solr_url.description"><![CDATA[Zum Beispiel http://www.dein-server.de:80/solr/]]></item> 
     7        </category> 
     8        <category name="wcf.header.menu"> 
     9                <item name="wcf.header.menu.user.solr"><![CDATA[Suche]]></item> 
     10        </category> 
     11         
     12        <!-- admin: menu --> 
     13        <category name="wcf.acp.menu"> 
     14                <item name="wcf.acp.menu.link.solr"><![CDATA[Suchserver]]></item> 
     15                <item name="wcf.acp.menu.link.solr.index"><![CDATA[Index]]></item> 
     16        </category> 
     17 
     18        <category name="wcf.acp.solr"> 
     19                <item name="wcf.acp.solr"><![CDATA[Solr]]></item> 
    720        </category> 
    821</language> 
  • solr/en.xml

    r1183 r1190  
    44        <category name="wcf.acp.option"> 
    55                <item name="wcf.acp.option.solr_url"><![CDATA[Solr]]></item> 
    6                 <item name="wcf.acp.option.solr_url.description"><![CDATA[e.g. http://solr.your-server.com:80/solr/nutch/]]></item> 
     6                <item name="wcf.acp.option.solr_url.description"><![CDATA[e.g. http://www.your-server.com:80/solr/]]></item> 
     7        </category> 
     8        <category name="wcf.header.menu"> 
     9                <item name="wcf.header.menu.user.solr"><![CDATA[Search]]></item> 
     10        </category> 
     11         
     12        <!-- admin: menu --> 
     13        <category name="wcf.acp.menu"> 
     14                <item name="wcf.acp.menu.link.solr"><![CDATA[Searchserver]]></item> 
     15                <item name="wcf.acp.menu.link.solr.index"><![CDATA[Index]]></item> 
     16        </category> 
     17 
     18        <category name="wcf.acp.solr"> 
     19                <item name="wcf.acp.solr"><![CDATA[Solr]]></item> 
    720        </category> 
    821</language> 
  • solr/files/lib/data/solr/SolrSearch.class.php

    r1183 r1190  
    22// wcf imports 
    33require_once(WCF_DIR.'lib/data/message/search/AbstractSearchableMessageType.class.php'); 
    4 require_once(WCF_DIR.'lib/data/contest/ContestSearchResult.class.php'); 
     4require_once(WCF_DIR.'lib/data/solr/SolrSearchResult.class.php'); 
    55 
    66/** 
     
    2424         */ 
    2525        public function cacheMessageData($messageIDs, $additionalData = null) { 
    26                 $this->messageCache = $additionalData; 
     26                if(is_array($additionalData)) { 
     27                        foreach($additionalData as $row) { 
     28                                $entry = new SolrSearchResult($row); 
     29                                if($entry->isViewable()) { 
     30                                        $this->messageCache[$row['messageID']] = $row; 
     31                                        $this->messageCache[$row['messageID']]['message'] = $entry; 
     32                                } 
     33                        } 
     34                } 
    2735        } 
    2836         
  • solr/files/lib/data/solr/SolrSearchResult.class.php

    r1183 r1190  
    1010 * @package     de.easy-coding.wcf.solr 
    1111 */ 
    12 class ContestSearchResult extends DatabaseObject { 
    13          
    14         /** 
    15          * Returns the formatted message. 
    16          *  
    17          * @return      string 
    18          */ 
    19         public function getFormattedMessage() { 
    20                 require_once(WCF_DIR.'lib/data/message/bbcode/MessageParser.class.php'); 
    21                 MessageParser::getInstance()->setOutputType('text/html'); 
    22                 return MessageParser::getInstance()->parse($this->message, $enableSmilies = true, $enableHtml = false, $enableBBCodes = true); 
     12class SolrSearchResult extends DatabaseObject { 
     13 
     14        public function isViewable() { 
     15                return true; 
    2316        } 
    2417 
     
    2720         */ 
    2821        public function getFormattedMessage() { 
    29                 return SearchResultTextParser::parse(parent::getFormattedMessage()); 
     22                require_once(WCF_DIR.'lib/data/message/bbcode/MessageParser.class.php'); 
     23                MessageParser::getInstance()->setOutputType('text/html'); 
     24                $message = MessageParser::getInstance()->parse($this->message, $enableSmilies = true, $enableHtml = true, $enableBBCodes = true); 
     25                 
     26                return SearchResultTextParser::parse($message); 
    3027        } 
    3128} 
  • solr/files/lib/page/SolrSearchPage.class.php

    r1183 r1190  
    99 */ 
    1010class SolrSearchPage extends SearchResultPage { 
     11        public $templateName = 'solr'; 
    1112        protected $total = 0; 
    1213         
     
    2425         * @return      string 
    2526         */ 
    26         protected static function convertSingleWhitespace($string) { 
     27        protected function convertSingleWhitespace($string) { 
    2728                $string = str_replace(array("\t", "&nbsp;", "\r", "\n", "-", urldecode("%C2%A0")), " ", $string); 
    2829                while(strpos($string, '  ') !== false) { 
     
    3132                return $string; 
    3233        } 
     34 
     35        /** 
     36         * if the client is (or claims to be) connected via HTTPS 
     37         * @return boolean 
     38         */ 
     39        protected function isHTTPS() { 
     40                return isset($_SERVER["HTTP_X_PROTO"]) || 
     41                        (isset($_SERVER['HTTPS']) && 
     42                                !empty($_SERVER['HTTPS']) && 
     43                                $_SERVER['HTTPS'] !== 'off'); 
     44        } 
    3345         
    3446        /** 
     
    3648         */ 
    3749        protected function readSearch() { 
     50         
     51                // seo friendly redirect of page 1 
     52                if(isset($_GET['pageNo']) && $_GET['pageNo'] == 1) { 
     53                        $url = ($this->isHTTPS() ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'].str_replace("&pageNo=1", "", $_SERVER['REQUEST_URI']); 
     54                        HeaderUtil::redirect($url, false, true); 
     55                        exit; 
     56                } 
     57                 
     58                // get search query 
     59                if (isset($_REQUEST['q'])) $this->query = $_REQUEST['q']; 
     60         
     61                if(!$this->query) { 
     62                        return; 
     63                } 
     64                 
     65                // param 
     66                $offset = (max($this->pageNo,1) - 1) * $this->itemsPerPage; 
     67                $i = $offset; 
     68 
     69                // query search 
    3870                $solr = new SolrService(SOLR_URL); 
    39  
    40                 $tmp = $solr->search($this->query, ($this->pageNo - 1) * $this->itemsPerPage, $this->itemsPerPage); 
     71                $tmp = $solr->search($this->query, $offset, $this->itemsPerPage); 
    4172                $this->total = intval($tmp->response->numFound); 
    42  
    43                 $i = 0; 
    44                 foreach($tmp->highlighting as $row) { 
    45                                          
     73                 
     74                if(!$tmp || !$tmp->highlighting) { 
     75                        return; 
     76                } 
     77                 
     78                // transform data in wcf compatible format 
     79                foreach($tmp->highlighting as $url => $row) { 
     80                        // press first dimension of stdobject into clean array 
     81                        $data = array(); 
     82                        $data['messageID'] = $i; 
     83                        $data['message'] = $this->convertSingleWhitespace($row->content[0]); 
     84                        $data['subject'] = $row->title[0]; 
     85                        $data['url'] = $url; 
     86                        $data['displayurl'] = $row->url[0]; 
     87                        $data['image'] = 'http://image.browsershots.de/'.parse_url($data['url'], PHP_URL_HOST); 
     88                        $data['time'] = time(); // TODO: time 
     89                        $data['messageType'] = 'solr'; 
     90                        $data['type'] = 'solr'; 
     91                 
    4692                        //  set solr defaults 
    47                         if(empty($row->messageType)) { 
    48                                 $row->messageType = 'solr'; 
     93                        if(!empty($row->messageType)) { 
     94                                $data['messageType'] = $row->messageType; 
    4995                        } 
    50                         if(empty($row->messageID)) { 
    51                                 $row->messageID = $i; 
     96                        if(!empty($row->type)) { 
     97                                $data['type'] = $row->type; 
    5298                        } 
    53                  
     99                        if(!empty($row->messageID)) { 
     100                                $data['messageID'] = $row->messageID; 
     101                        } 
     102         
    54103                        // increment message key position 
    55                         $this->result[$i++] = $row; 
     104                        $this->result[$i++] = $data; 
    56105                } 
    57106        } 
  • solr/package.xml

    r1185 r1190  
    3434                <pagemenu>pagemenu.xml</pagemenu> 
    3535                <pagelocation>pagelocation.xml</pagelocation> 
     36                <searchablemessagetypes>smt.xml</searchablemessagetypes> 
    3637                 
    3738                <!-- languages --> 
  • solr/smt.xml

    r1183 r1190  
    33<data>   
    44        <import> 
    5                 <smt name="contestEntry"> 
     5                <smt name="solr"> 
    66                        <classpath>lib/data/solr/SolrSearch.class.php</classpath> 
    77                </smt> 
  • solr/templates/searchResultSolr.tpl

    r1183 r1190  
    1 <div class="message content"> 
     1<div class="message content solr"> 
    22        <div class="messageInner container-{cycle name='results' values='1,2'}"> 
    33                <div class="messageHeader"> 
    44                        <div class="containerIcon"> 
    5                                 <a href="index.php?page=Contest&amp;contestID={@$item.message->contestID}&amp;highlight={$query|urlencode}{@SID_ARG_2ND}"><img src="{icon}contestM.png{/icon}" alt="" /></a> 
     5                                <img src="{$item.message->image}" alt="" /> 
    66                        </div> 
    77                        <div class="containerContent"> 
    8                                 <p class="light smallFont">{@$item.message->time|time}</p> 
    9                                 <p class="light smallFont">{lang}wcf.contest.by{/lang} <a href="index.php?page=User&amp;userID={@$item.message->userID}{@SID_ARG_2ND}">{$item.message->username}</a></p> 
     8                                <h3><a href="{$item.message->url}{@SID_ARG_2ND}">{@$item.message->subject}</a></h3> 
    109                        </div> 
    1110                </div> 
    12                  
    13                 <h3><a href="index.php?page=Contest&amp;contestID={@$item.message->contestID}&amp;highlight={$query|urlencode}{@SID_ARG_2ND}">{$item.message->subject}</a></h3> 
    1411                 
    1512                <div class="messageBody"> 
     
    1815                 
    1916                <div class="messageFooter"> 
    20                         <div class="smallButtons"> 
    21                                 <ul> 
    22                                         <li class="extraButton"><a href="#top" title="{lang}wcf.global.scrollUp{/lang}"><img src="{icon}upS.png{/icon}" alt="" /> <span class="hidden">{lang}wcf.global.scrollUp{/lang}</span></a></li> 
    23                                 </ul> 
    24                         </div> 
     17                        <a href="{$item.message->url}" class="externalURL">{@$item.message->displayurl}</a> 
    2518                </div> 
    2619                <hr />