【问题标题】:PHP Solr Xpath Error: no elements foundPHP Solr Xpath 错误:未找到任何元素
【发布时间】:2014-08-16 20:12:34
【问题描述】:

https://github.com/php/pecl-search_engine-solr/blob/master/solr_functions_client.c#L564

PECL 信息

Installed packages, channel pecl.php.net:
=========================================
solr 2.0.0 stable

PHP 版本 5.3.6

Solr 版本 4.9.0

我正在使用该程序的全新安装,使用未更改配置的 /example/start.jar 包。管理面板非常好。但是,围绕该技术构建的应用程序在尝试执行基于 Lucene 的查询时返回以下错误:

PHP Warning:  SolrClient::query(): Xpath Error: no elements found

Solr 在我的本地环境中工作,不同之处在于 PHP 的版本,设置为 5.5.9-1ubuntu4.3。这可能是一个因素吗?

【问题讨论】:

  • 当您查询 Solr 服务器日志时,它会说什么?我猜您遇到了异常,或者根本没有加载核心,所以应用程序容器只是返回错误消息而不是 XML 内容。

标签: php xpath solr


【解决方案1】:

我遇到了同样的问题,对我来说是以下问题: 问题是它没有找到相应的 solr 核心/集合。 php solr 实现(接缝)默认使用名为“collection1”的核心,如果此核心不存在,则会发生错误“Xpath Error: no elements found”。

要解决此问题,您可以将 PATH 设置为您使用的集合/核心名称。 您必须在 http:// host:port 之后设置 URL 部分的路径,如果您执行查询,您可以在 Solr Admin 中看到。 例子: 你的核心被命名为“食谱”, 查询网址为:http://localhost:8983/solr/recipes/select?q=*%3A*&wt=json&indent=true 所以你需要路径“/solr/recipes”

对于设置路径,您可以这样做:(基于http://php.net/manual/en/solr.examples.php

define('SOLR_PATH', '/solr/recipes');

$options = array
(
    'hostname' => SOLR_SERVER_HOSTNAME,
    'login'    => SOLR_SERVER_USERNAME,
    'password' => SOLR_SERVER_PASSWORD,
    'port'     => SOLR_SERVER_PORT,
    'path'     => SOLR_PATH,
);

$client = new SolrClient($options);

$doc = new SolrInputDocument();

$doc->addField('id', 334455);
$doc->addField('cat', 'Software');
$doc->addField('cat', 'Lucene');

$updateResponse = $client->addDocument($doc);

print_r($updateResponse->getResponse());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2018-07-02
    • 1970-01-01
    • 2023-03-21
    • 2020-05-27
    • 1970-01-01
    相关资源
    最近更新 更多