【问题标题】:Performing DokuWiki search with PHP XML-RPC使用 PHP XML-RPC 执行 DokuWiki 搜索
【发布时间】:2013-11-11 23:48:42
【问题描述】:

我有一个简单的服务,它封装了通过 PHP XML-RPC 库进行的 DokuWiki 调用 (https://www.dokuwiki.org/devel:xmlrpc#accessing_the_xml-rpc_interface)。我正在尝试执行 DokuWiki 搜索,但似乎无法使其正常工作。这是我的服务中的相关功能:

public function search($query)
{
    echo $query . "\n";

    // initialize the new message for the search method call
    $message = new xmlrpcmsg('dokuwiki.search');
    $message->addParam(new xmlrpcval($query, "string"));

    // return message results based on XMLRPC server response
    return $this->getResults( $this->_client->send($message) );
}

private function getResults($response)
{
    if( !$response->faultCode() ) {
       return $response->value();
    }

    throw new Exception( $response->faultString() );
}

我的客户端代码正在根据查询语法进行搜索(此处概述https://www.dokuwiki.org/search):

function searchWiki($dokuwiki, $search, $ns)
{
   $query = "[ $search @$ns ]";
   return $dokuwiki->search($query);
}

但是,无论搜索查询是什么,它似乎都不会产生任何搜索结果。例如,

Query:
[ user @detailed-manuals ]

Result:
object(xmlrpcval)#5 (3) {
  ["me"]=>
  array(1) {
    ["array"]=>
    array(0) {
    }
  }
  ["mytype"]=>
  int(2)
  ["_php_class"]=>
  NULL
}

即使在全局命名空间中搜索也不会产生任何结果,尽管它应该作为术语“用户”出现任意次数。如果有人能提供见解,那将是最有帮助的。

【问题讨论】:

  • 根据this xmlrpc clientthis test,您可能想尝试不使用方括号,即:“$query = "$search @$ns";"。它会产生更好的结果吗?
  • 谢谢,去掉括号确实有结果!
  • 尽管,无论搜索查询如何,每次在给定的命名空间中,结果似乎都在同一个确切的页面上,并带有确切的结果字符串。不确定这是否是正确的方法......
  • 搜索查询应返回每个页面的分数。这似乎是在页面上找到该模式的次数。这些分数与您的查询一致吗?

标签: php xml xml-rpc dokuwiki xmlrpcclient


【解决方案1】:

问题是我需要执行 indexer.php 脚本来索引 DokuWiki 安装中的所有页面,每个链接如下。运行脚本后,我得到了很多结果。

https://www.dokuwiki.org/indexer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多