solr 4.0 与php结合SolrPhpClient实现

来源:互联网 发布:黑客帝国4矩阵复活剧情 编辑:程序博客网 时间:2024/05/02 04:31
 

php的solr接口实现已现有代码实现了。

项目地址:http://code.google.com/p/solr-php-client/

或者

http://download.csdn.net/detail/hugofgh/8404777

不过这里需要注意的是因为solr现在是4.0版本了,该SolrPhpClient实现里面还有几个需要注意的,如service.php 中实现add接口的addDocument方法,4.0版本的add属性参数已有改变,废弃了其中的waitflush,allowDups,overwritePending,overwriteCommitted这几个参数所以需要将这几个参数去掉,否则solr服务器会报错。

public function addDocument(Apache_Solr_Document $document, $allowDups = false, $overwritePending = true, $overwriteCommitted = true, $commitWithin = 0){$dupValue = $allowDups ? 'true' : 'false';$pendingValue = $overwritePending ? 'true' : 'false';$committedValue = $overwriteCommitted ? 'true' : 'false';$commitWithin = (int) $commitWithin;$commitWithinString = $commitWithin > 0 ? " commitWithin=\"{$commitWithin}\"" : '';/*$rawPost = "<add allowDups=\"{$dupValue}\" overwritePending=\"{$pendingValue}\" overwriteCommitted=\"{$committedValue}\"{$commitWithinString}>";*///注释此行,改成下面的$rawPost = "<add>";$rawPost .= $this->_documentToXmlFragment($document);$rawPost .= '</add>';return $this->add($rawPost);}public function addDocuments($documents, $allowDups = false, $overwritePending = true, $overwriteCommitted = true, $commitWithin = 0){$dupValue = $allowDups ? 'true' : 'false';$pendingValue = $overwritePending ? 'true' : 'false';$committedValue = $overwriteCommitted ? 'true' : 'false';$commitWithin = (int) $commitWithin;$commitWithinString = $commitWithin > 0 ? " commitWithin=\"{$commitWithin}\"" : '';/*$rawPost = "<add allowDups=\"{$dupValue}\" overwritePending=\"{$pendingValue}\" overwriteCommitted=\"{$committedValue}\"{$commitWithinString}>";*///注释此行,改成下面的$rawPost = "<add>";foreach ($documents as $document){if ($document instanceof Apache_Solr_Document){$rawPost .= $this->_documentToXmlFragment($document);}}$rawPost .= '</add>';return $this->add($rawPost);}public function commit($expungeDeletes = false, $waitFlush = true, $waitSearcher = true, $timeout = 3600){$expungeValue = $expungeDeletes ? 'true' : 'false';$flushValue = $waitFlush ? 'true' : 'false';$searcherValue = $waitSearcher ? 'true' : 'false';/*$rawPost = '<commit expungeDeletes="' . $expungeValue . '" waitFlush="' . $flushValue . '" waitSearcher="' . $searcherValue . '" />';*///注释此行,改成下面的$rawPost = '<commit expungeDeletes="' . $expungeValue . '" waitSearcher="' . $searcherValue . '" />';return $this->_sendRawPost($this->_updateUrl, $rawPost, $timeout);}public function optimize($waitFlush = true, $waitSearcher = true, $timeout = 3600){$flushValue = $waitFlush ? 'true' : 'false';$searcherValue = $waitSearcher ? 'true' : 'false';//$rawPost = '<optimize waitFlush="' . $flushValue . '" waitSearcher="' . $searcherValue . '" />';//注释此行,改成下面的$rawPost = '<optimize waitSearcher="' . $searcherValue . '" />';return $this->_sendRawPost($this->_updateUrl, $rawPost, $timeout);}








0 0
原创粉丝点击