sphinx api基本设置

时间:2015-04-17 11:26:51

标签: php sphinx

其实我的问题似乎很基本。

  • 我正在使用sphinx版本2.3.1 beta
  • 我无法设置它来搜索我的数据库。
  • 我正在使用带有1.57 GB数据的mysql数据库,这是在我的服务器localhost上。
  • 我想将 sphinxapi php 一起使用。

正如我想的那样,我必须告诉狮身人面像

  1. 在哪里查找数据
  2. 如何处理
  3. 索引的位置
  4. 好吧,我不知道应该更改哪个文件。

    我在sphinx文件夹中找到了一个名为 configure 的文件,我尝试了这个,然后我更改了 sphinx.conf.in 但我仍然无法使用 sphinx

    如果您帮我配置 sphinx 基本设置,那就太棒了。

    我研究了问题,但没有像这样的基本问题。

    提前致谢。

2 个答案:

答案 0 :(得分:4)

我已经看过几次初学者的混乱,所以我想我会给出更详细的快速入门。所以,开始使用Sphinx搜索的基本介绍:

通常,sphinx项目文件存储在三个目录下:project/sphinx/etcproject/sphinx/logsproject/sphinx/data。这些可以根据需要进行修改,但我遵循以下惯例。

运行Sphinx

在系统上安装Sphinx后,您将拥有两个可执行文件:indexersearchdindexer是检查配置文件并为您指定的数据编制索引以便快速访问的程序。 searchd是您通常希望继续运行的后台进程(或守护程序)。将此视为Sphinx搜索引擎的动作。来自sphinxapi的所有查询都将路由到searchdindexer -c /path/to/project/sphinx/etc/sphinx.conf --all 将对索引数据执行搜索,并按照您指定的顺序返回记录的ID。运行这两个可执行文件的例子(在linux中,虽然在Windows上它应该不会太大),如下所示:

searchd -c /path/to/project/sphinx/etc/sphinx.conf --rotate

这会索引配置文件中指定的所有源。有更多选项可用于仅索引指定的源。 Detailed listing of options here

searchd

这会初始化rotate守护程序并将其分支到后台,它将继续运行直到您将其终止。 --stop选项允许您在将来更新索引时保持守护程序运行。您可以使用source开关来停止守护程序。 Detailed listing of options here

配置Sphinx

这将我们带到配置文件。配置文件由indexsearchd配置的集合以及用于配置sphinx本身的sphinx.conf部分组成。这里有很多选项要配置,但基本的MySQL(通常是在sphinx安装文件夹中找到的sphinx.conf.dist文件)文件有点压倒性的。我只是提到了一些开始使用所需的基本配置选项。我假设您使用searchd { /* Define your file paths. */ log = /path/to/project/sphinx/logs/searchd.log query_log = /path/to/project/sphinx/logs/query.log pid_file = /path/to/project/sphinx/logs/searchd.pid /* Listen on port 9312 (This is the default port) */ listen = localhost:9312 } ,但这应该很容易适应任何数据提供者。

.pid

这是基本的搜索配置,指定了写日志的位置以及要锁定的9312文件。搜索守护程序侦听端口sphinxapi,默认情况下source text_search{ /* Data provider details */ type = mysql sql_host = localhost sql_user = sql_user_name sql_pass = sql_pass_word sql_db = my_db_name /* The query used to index the data. A very basic example... */ sql_query = SELECT id, text_field, status FROM text_search sql_attr_uint = status } 转发它的查询。

indexer

这是数据来源。在这里,id将运行提供的查询并为结果编制索引。 status被视为关键,因为它是一个整数字段,没有明确提到它是什么(与text_field字段不同)。由于status是一个文本字段(duh!),因此sphinx会对隐式全文搜索进行索引。我们还指定index text_search_index{ /* The data source that we have defined above. */ source = text_search /* The path to store the index data/cache */ path = /path/to/project/data/text_search /* Use stemming while searching */ morphology = stem_en } 是一个整数字段,以后我们可以在执行搜索时过滤结果。

searchd

这定义了searchd将用于搜索的索引的详细信息。提供数据来源。有许多选项可根据您的需求定制结果。我只提供了一个示例,我们指定{{1}}必须使用词干算法来匹配查询。可以通过以下方式收集所有可用选项的详细信息:

这绝不是详细的,但我希望这会让你开始......

答案 1 :(得分:1)

如果您已经安装了sphinx,请运行

indexer

(没有参数)

...它应该告诉你在哪里寻找配置文件。

sphinx.conf.dist 复制到该位置的sphinx.conf。 (不是.in文件)然后根据需要进行编辑。