【问题标题】:Sphinx Search and Laravel狮身人面像搜索和 Laravel
【发布时间】:2023-12-07 11:03:01
【问题描述】:

在我的 laravel 项目中安装了这个包:

http://packalyst.com/packages/package/scalia/sphinxsearch

安装过程中一切正常。我无法从数据库中获取值。

这是包的config.php文件:

<?php

return array (
    'host'    => '127.0.0.1',
    'port'    => 9312,
    'indexes' => array (
        'user_index' => array ( 'table' => 'user', 'column' => 'user_id', 'modelname' => 'User' ),
    )
);

这是我的功能,查看值:

$results = SphinxSearch::search('user_index')->get();

var_dump($results);

它返回 bool(false)

为什么我无法从我的数据库中获取值?

提前致谢。

【问题讨论】:

  • 你的搜索查询应该是什么'user_index'。
  • 你检查SphinxSearch::getErrorMessage()了吗??

标签: php search laravel eloquent sphinx


【解决方案1】:

Sphinx 搜索需要安装 Sphinx 搜索二进制文件,不幸的是,您提供的链接没有指定它是否也安装了 sphinx - 如果它安装了我会感到惊讶,因此您可能需要自己安装它。 Sphinx 不仅仅是一个搜索数据库的简单插件 - 它根据您在配置文件中提供的查询构建索引,然后搜索这些索引,而不是直接搜索您的数据库。

Sphinx搜索可以下载here

如果您使用的是 Ubuntu / Debian,它甚至可以像这样简单:

sudo apt-get install sphinxsearch

我有一个用于搜索守护程序的非常简单的 Sphinx 配置示例,您可以将其用作参考 on my Github here

【讨论】:

  • 在 Centos 7 上安装 sphinx 并不容易,必须找到 rpm 文件进行安装、配置、创建索引和源,但我仍然收到相同的错误消息。
  • 您是否使用正确的 MySQL 数据库凭据更新了 /etc/sphinxsearch/sphinx.conf(或您安装到的任何位置)? Sphinx 需要单独连接到它,您还必须告诉 Sphinx 使用 MySQL(根据我的配置文件)
  • 是的,我也这样做了,我自己写了凭据。
  • 确保您没有在该配置中设置listen = 9307,您安装的插件默认使用端口9312,因此至少将其设置为listen = 9312
  • 好的,我试试这个。