当我在 php 中尝试 Solr 时出现问题

2024-01-08

我在 PHP 中运行示例时遇到问题,代码如下:

<?php
  require_once( 'SolrPhpClient/Apache/Solr/Service.php' );

  // 
  // 
  // Try to connect to the named server, port, and url
  // 
  $solr = new Apache_Solr_Service( 'localhost', '8983', '/solr/' );

  if ( ! $solr->ping() ) {
    echo 'Solr service not responding.';
    exit;
  }

  //
  //
  // Create two documents to represent two auto parts.
  // In practice, documents would likely be assembled from a 
  //   database query. 
  //
  $parts = array(
    'spark_plug' => array(
      'partno' => 1,
      'name' => 'Spark plug',
      'model' => array( 'Boxster', '924' ),
      'year' => array( 1999, 2000 ),
      'price' => 25.00,
      'inStock' => true,
    ),
    'windshield' => array(
      'partno' => 2,
      'name' => 'Windshield',
      'model' => '911',
      'year' => array( 1999, 2000 ),
      'price' => 15.00,
      'inStock' => false,
    )
  );

  $documents = array();

  foreach ( $parts as $item => $fields ) {
    $part = new Apache_Solr_Document();

    foreach ( $fields as $key => $value ) {
      if ( is_array( $value ) ) {
        foreach ( $value as $datum ) {
          $part->setMultiValue( $key, $datum );
        }
      }
      else {
        $part->$key = $value;
      }
    }

    $documents[] = $part;
  }

  //
  //
  // Load the documents into the index
  // 
  try {
    $solr->addDocuments( $documents );
    $solr->commit();
    $solr->optimize();
  }
  catch ( Exception $e ) {
    echo $e->getMessage();
  }

  //
  // 
  // Run some queries. Provide the raw path, a starting offset
  //   for result documents, and the maximum number of result
  //   documents to return. You can also use a fourth parameter
  //   to control how results are sorted and highlighted, 
  //   among other options.
  //
  $offset = 0;
  $limit = 10;

  $queries = array(
    'partno: 1 OR partno: 2',
    'model: Boxster',
    'name: plug'
  );

  foreach ( $queries as $query ) {
    $response = $solr->search( $query, $offset, $limit );

    if ( $response->getHttpStatus() == 200 ) { 
      // print_r( $response->getRawResponse() );

      if ( $response->response->numFound > 0 ) {
        echo "$query <br />";

        foreach ( $response->response->docs as $doc ) { 
          echo "$doc->partno $doc->name <br />";
        }

        echo '<br />';
      }
    }
    else {
      echo $response->getHttpStatusMessage();
    }
  }
?>

但运行后出现以下错误:

'400' Status: Bad Request
Fatal error: Uncaught exception 'Apache_Solr_HttpTransportException' with message ''400' Status: Bad Request' in C:\software\study\php\xampp\xampp\htdocs\SolrPhpClient\Apache\Solr\Service.php:338 Stack trace: #0 C:\software\study\php\xampp\xampp\htdocs\SolrPhpClient\Apache\Solr\Service.php(1170): Apache_Solr_Service->_sendRawGet('http://localhos...') #1 C:\software\study\php\xampp\xampp\htdocs\solr1.php(98): Apache_Solr_Service->search('partno: 1 OR pa...', 0, 10) #2 {main} thrown in C:\software\study\php\xampp\xampp\htdocs\SolrPhpClient\Apache\Solr\Service.php on line 338

可能是什么问题呢。

感谢所有帮助。


您可能有 (a) 错误的查询语法,或 (b) 索引配置错误。

检查你的索引

看起来您有零件编号、型号等字段。您需要确保这些字段已在您的模式.xml http://wiki.apache.org/solr/SchemaXml。我可能猜测您没有在那里创建它们,因此您的文档提交失败,或者您有一个模型字段,但它不是多值的。

如果它通过了文件提交,那么您可能会遇到查询问题......

调试查询

调试查询的最简单方法是在发送查询之前回显查询。在这种情况下:

 echo $query

从中获取输出并点击:

 http://localhost:8983/solr/select?q=<query>

(其中来自 echo 语句的查询)。

您可能会收到 400 错误。我的猜测是您在某个地方有一个错误的字段名称,或者在查询中使用了无效的语法。如果您可以发布 $query,它将更容易帮助解决问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我在 php 中尝试 Solr 时出现问题 的相关文章

  • 字符串不等于其自身

    But why if i echo good else echo bad echos gt gt bad 您应该复制此片段 如果你手写的话 它会起作用 它让我疯狂 你太狡猾了 第二个 I 不是小写拉丁文小写 i 我把它转储了 hexdump
  • Codeigniter,为MySQL创建表和用户

    我想以编程方式使用 CI 创建数据库和用户 到目前为止 我有这 2 个简单的 MySQL 语句 CREATE DATABASE testdb DEFAULT CHARACTER SET utf8 COLLATE utf8 general c
  • PHP 类中的命名空间和全局变量问题

    我陷入了这种困惑 我不明白为什么我的 HelperClass 下的全局 error 返回空 我可以验证 class gt error 确实之前已填充了数据 在这种情况下 命名空间是否存在某种我不知道的问题 请给我一些指点 以下是一些相关的代
  • 有没有办法清除所有会话中的一些会话数据?

    一般来说 我有以下场景 从数据库中获取产品及其相关数据 将获取的数据转换为 php product 对象 在会话中缓存产品对象 缓存是只读的 即客户在网站上查看产品 但也有类似的电话getProductIdsByCategory categ
  • 正则表达式匹配 2 个或更多单词

    我有一个正则表达式尝试匹配 2 个或更多单词 但它没有按预期工作 我究竟做错了什么 string i dont know do you know preg match a z b 2 string match echo pre print
  • Woocommerce 产品查询库存状态

    我使用 3 种可用性状态 有货 缺货 和 允许缺货 我想要将仅处于 库存 状态的产品导出为 XML 问题是 woocommerce 返回两种状态的值 instock 有库存 和 允许缺货 现在查询如下 query array post ty
  • 将 PHP 错误存储在日志文件中

    我想将 php 生成的任何错误和警告存储在日志文件中 但是still也以正常方式显示它们 回显 Thanks 您可以定义自己的函数并描述如何处理错误 http www php net manual en function set error
  • 通过 wp_handle_upload 删除未放入上传文件夹中的图像

    我正在将图像保存到上传文件夹 但我正在使用文件放置内容 http php net manual en function file put contents php代替wp 句柄 上传 https codex wordpress org Fu
  • 使用类型映射选项的 PHP SoapClient 示例

    我在 PHP 的 SoapClient 中的命名空间使用方面遇到了一个小问题 从文档中我相信构造函数的类型映射选项将解决我的问题 http php net manual en soapclient soapclient php http p
  • URL 重写 OpenCart 产品 SEO

    我想重写我的 opencart 网上商店的产品网址 Opencart 本身有一个 seo 实现 这真的很糟糕 我已经更新了 seo 实现 以便能够对多个类别使用相同的关键字 请参阅 Opencart 重复 URL 关键字 https sta
  • 在订单编辑页面添加自定义元框并将其显示在客户订单页面上

    在 WooCommerce 中 想要在 WooCommerce 管理订单页面上添加自定义元框 在此框中 我只想在保存到该订单的文本字段中输入跟踪号码 然后在客户查看订单页面上 我想显示一个按钮 用于打开带有跟踪信息的模式 该模式只会拉入一个
  • 需要 php pdo 内爆数组并在 mysql 中插入多行

    基于this https stackoverflow com questions 4629022 how to insert an array into a single mysql prepared statement w php and
  • PHP file_get_contents() 和设置请求标头

    使用 PHP 是否可以发送 HTTP 标头file get contents 我知道您可以从您的php ini文件 但是 您是否还可以发送其他信息 例如HTTP ACCEPT HTTP ACCEPT LANGUAGE and HTTP CO
  • Codeigniter:用户会话不断过期

    我正在使用 CodeIgniter 但在会话方面遇到了一个小问题 我已将 config php 中的 sess expiration 设置为 0 以便用户会话永远不会过期 但用户 甚至我自己 仍然偶尔会被踢出并要求再次登录 顺便说一句 我将
  • PHP PDO:将数据作为对象获取 - 在调用 __construct 之前分配的属性。它是否正确?

    完整的问题应该是 这是正确的还是我不能指望的错误 为什么这是正确的行为 我一直在更多地使用 PDO 特别是直接将数据提取到对象中 在这样做的过程中我发现了这一点 如果我直接将数据获取到像这样的对象中 STH DBH gt prepare S
  • WooCommerce 添加到购物车后停止重定向

    我希望在用户单击 添加到购物车 按钮后完全删除任何重定向 实际上我没有使用产品页面 我使用一个带有产品链接的简单按钮 如下所示 add to cart 492 我的用户将单击我页面上的多个 添加到购物车 按钮 因此在单击第一个按钮后他无法重
  • PHP cURL 代理带标头?

    我正在制作一个 PHP 图像代理脚本 我需要它不仅能够回显其请求的图像的内容 而且还能够以相同的方式重现图像请求的标头 我见过一个 另一个 但没有同时看到过 这些 cURL 选项让我感到困惑 我该怎么做 抱歉 我不确定你想要什么 这是从图像
  • 一个模型中的多个表 - Laravel

    我的索引页使用数据库中的 3 个表 索引滑块 索引特征 页脚框 我使用一个控制器 IndexController php 并像这样调用三个模型 public function index return View make index gt
  • 使用 jQuery 将值发送到 $_GET

    我正在使用一个 PHP 脚本 该脚本正在通过 GET 等待两个值 我正在尝试使用 jQuery 传递这两个值 而这正是我不太擅长的地方 这是我得到的代码 有人能指出我正确的方向吗 谢谢 function xrate id rating aj
  • 将 1 添加到字段

    如何将以下 2 个查询变成 1 个查询 sql SELECT level FROM skills WHERE id id LIMIT 1 result db gt sql query sql level int db gt sql fetc

随机推荐

  • 鲁比:析构函数?

    我偶尔需要在缓存目录中使用 rmagick 创建图像 为了快速删除它们 而又不会在视图中丢失它们 我想在图像类的 Ruby 实例被破坏或进入垃圾收集时删除图像文件 我必须重写什么 ClassMethod 才能为析构函数提供代码 edgeru
  • 根据pandas数据框中的关键列减去列

    我有两个数据框看起来像 df1 ID A B C D 0 ID1 0 5 2 1 3 5 6 6 1 ID2 1 2 5 5 4 3 2 2 2 ID1 0 7 1 2 5 6 6 0 3 ID3 1 1 7 2 10 3 2 df2 ID
  • 获取 JSON 数组中的最大值

    我正在尝试创建一个 JavaScript 函数 该函数从外部 JSON 中的数组获取信息 然后获取其中一个 JSON 变量的最大值 或前 5 个值 对于此示例 假设我想要获取值 ppg 的最大值 这是该数组的一个小样本 player And
  • 我可以将 Activex 与 silverlight4 一起使用吗?

    我需要在我的 silverlight 应用程序中使用 ActiveX 控件 经过一些研究 我发现了 silverlight 应用程序可以使用 ActiveX 控件的几种方法 在网页中使用 ActiveX 控件以及 silverlight 插
  • 使用 ScheduledExecutorService 启动和停止计时器

    从我的阅读来看 ScheduledExecutorService 似乎是在 Java 中启动和停止计时器的正确方法 我需要移植一些启动和停止计时器的代码 这不是一个周期性定时器 此代码在启动计时器之前停止计时器 因此 实际上每次启动都是一次
  • 如何使用swift在iOS嵌入式动态框架中使用第三方库

    现在我有一个项目 比如 testApp 使用一些第三方库 比如 alamofire 和 Objective C 中的其他一些库 现在我想添加一个今天的小部件 根据一些教程 我创建了一个新的目标 testAppKit 作为共享动态框架 并将目
  • Java:System.out.println() 这么慢的原因是什么?

    对于可以在文本编辑器中完成的小型逻辑程序 为了跟踪 我使用经典的System out println 我想你们都知道在大量迭代的块中使用它是多么令人沮丧 为什么这么慢 其背后的原因是什么 这与 JVM 没有任何关系 将文本打印到屏幕上只涉及
  • FileProvider - 使用默认内部存储文件夹,文件路径不明确

    它在文档中说 FileProvider 只能为以下位置的文件生成内容 URI 您事先指定的目录 要指定目录 使用 XML 的子元素指定其存储区域和路径 元素 例如 以下 paths 元素告诉 您打算请求图像 的内容 URI 的 FilePr
  • 如何在AngularJS中获取图像尺寸?

    我想在用户选择要上传的文件时检查图像的尺寸
  • 反转角度 2 *ngFor

    li user name is user age years old li 是否可以反转 ngFor 使项目自下而上添加 你可以简单地使用 JavaScript reverse 在阵列上 不需要特定角度的解决方案 li user name
  • 首先在 EF 代码中将文字或常量作为复合键的一部分

    我对实体框架的代码优先方法相对较新 我已经使用数据库优先方法有一段时间了 但是代码优先似乎更适合我当前正在开发的应用程序 我正在使用现有的 MS SQL 数据库 并且不允许我对数据库进行任何更改 我使用 Code First 的原因是 Fl
  • 在 Windows 8 中使用 C# 的 WinRT 中的磁盘空间

    我有两个解决方案 但都对我没有用 解决方案1 kernel32 dll 其工作代码 注意 但我不想在我的应用程序中导入任何 dll b c 其市场提交问题 DllImport kernel32 dll SetLastError true s
  • django 本地时间模板过滤器不起作用

    我使用 django 1 10 来显示日期时间 日期时间存储在 mongodb 中 并且始终是没有时区信息的 UTC 因此我需要根据运行 django 的机器的时区显示日期时间 首先 在settings py中添加它们 TIME ZONE
  • 编译错误:“版本高于引用的程序集”

    我的视图页面出现错误 因此我将 Visual Studio 更新为 mvc4 尽管我正在使用 mvc3 我第一次使用 NuGet 更新 但它不起作用 所以我通过独立 MVC4 更新 所以它起作用了 但是当我尝试运行 MVC3 项目时 出现以
  • 使用 Metal 的旧设备上的内存使用量持续上升

    I use Metal and CADisplayLink活过滤CIImage并将其渲染成MTKView Starting display link displayLink CADisplayLink target self selecto
  • 如何更改 base64 格式的 svg img 的颜色?

    我有一个 Svg img 其中包含base64格式并尝试更改其颜色 有人知道如何执行此操作吗 我发现了一些关于
  • 是否可以将列表类型转换为生成器而不进行迭代?

    我知道可以将生成器转换为 低级 列表 例如list i for i in xrange 10 但是是否可以做相反的事情without首先迭代列表 例如 i for i in range 10 Edit 删除了这个词cast为了清楚地说明我想
  • 程序化组件上的 Vue 反应式 props

    给定一个组件 Vue component my comp props input watch input function 以下的编程方法是什么
  • 在swift4中解析Json

    你好 我尝试解码 Json 结果 ID 80 时间 09 00 00 地位 status 0 kirpeja id 74 name Natalja image natalija255 png duration 00 20 00 status
  • 当我在 php 中尝试 Solr 时出现问题

    我在 PHP 中运行示例时遇到问题 代码如下