MariaDB 10.0与SphinxSE

时间:2015-03-10 00:21:55

标签: mysql node.js full-text-search sphinx mariadb

我有一个关于将Sphinx与MariaDB 10.0集成的问题。 db附带了SphinxSE存储引擎,但是我无法找到有关如何设置它的详细信息。请考虑以下情形:

我有一个销售图书的应用程序使用带有下表的数据库:“Book”,“Listing”和“School”。 “列表”包含与单本书和单个学校的关系。 “书”包含几列,最重要的是“标题”和“作者”。我想使用Sphinx在“Book”表上执行全文搜索,典型的查询可能类似于这样(在伪SQL中):“查找标题中包含字符串'Harry P'的所有书籍,其中a目前的名单存在于哈佛大学“。

根据MariaDB的article:“您需要创建一个特殊的ENGINE = SPHINX'搜索表',然后使用全文查询从中进行SELECT ...” - 这是否意味着Sphinx无法访问/索引我现有的MariaDB表格?我必须将我的“Book”表重新创建为SphinxSE表吗?如果是这种情况,如何指定此表与我的其他非Sphinx表(列表,学校等)之间的关系?上面的文章给出了一个非常简单的JOIN示例,但我仍然感到困惑。如果所有“书籍”都存储在Sphinx表中,MariaDB是否可以访问此表以查找不同类型的查询(不需要全文搜索)?

作为一个相关问题,什么是让Sphinx能够为书籍的标题和作者编制索引的好方法?应用程序将始终指定要查询的字段。

任何帮助都会非常感激,因为搜索和阅读的时间仍然让我在这个主题上一直处于黑暗中。

1 个答案:

答案 0 :(得分:1)

SphinxSE引擎不是真正的引擎。它所做的就是为底层Sphinx守护进程提供“代理”服务。它运行针对sphinx引擎的查询,然后将“结果”显示为FAKE表,以便mysql可以将其与原始表连接回来。

基本上是一种方便的方法,可以在一个查询中获取sphinx结果和适当的数据(使用mysql进行'JOIN'的艰苦工作)

...所以在“担心”sphinxSE之前。你需要找出一个正常的Sphinx索引,你可以运行查询。即创建一个能够运行该查询的索引。通常,sphinx查询只会给你一个id列表。

所以玩独立设置sphinx(没有SphinxSE或MariaDB) - 创建索引,并针对它运行一些查询。让它先工作。

只有一旦你有索引工作(并且你理解了这些概念) - 回过头来找出如何使用SphinxSE进行设置。

有很多关于让狮身人面像工作的文章 https://www.google.com/search?q=sphinx+search+getting+started

相关问题