mysql - 带有 SphinxSE 的 MariaDB 10.0

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

我有一个关于将 Sphinx 与 MariaDB 10.0 集成的问题。数据库与 SphinxSE 存储引擎打包在一起,但我无法找到有关如何设置它的详细信息。考虑以下场景:

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

根据 MariaDB 的 article :“你需要创建一个特殊的 ENGINE=SPHINX '搜索表',然后使用全文查询从中选择......” - 这是否意味着 Sphinx 根本无法访问/索引我现有的 MariaDB 表?我必须将我的“Book”表重新创建为 SphinxSE 表吗?如果是这种情况,我如何指定该表与我的其他非 Sphinx 表(Listing、School 等)之间的关系?上面的文章给出了一个非常简单的 JOIN 例子,但我还是一头雾水。如果所有的“书”都存储在一个 Sphinx 表中,MariaDB 是否可以访问该表以进行不同类型的查询(不需要全文搜索)?

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

任何帮助将不胜感激,因为数小时的搜索和阅读仍然让我对这个主题一无所知。

最佳答案

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

基本上是一种在一次查询中获取 sphinx 结果和适当数据的便捷方法(mysql 负责执行“JOIN”的艰苦工作)

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

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

只有一次您的索引可以正常工作(并且您了解这些概念)- 回来研究如何使用 SphinxSE 设置它。

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

关于mysql - 带有 SphinxSE 的 MariaDB 10.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28954129/

相关文章:

mysql - Connector/J 8.0 驱动程序中出现错误

mysql - mysql中一多多,如何建模?

java - 你如何为 MySQL X DevAPI 使用 Java 连接池?

javascript - 为什么 Node 程序永远不会终止?

node.js - Sequelize - 仅返回关系

visual-studio-code - 如何在VSCode中递归搜索不同目录下的文件?

javascript - 奇怪的 HTML 行为

javascript - 如何在 puppeteer 中执行 __doPostBack 函数?

mysql - 使用 MySQL 全文搜索单词

php mysql - 搜索字段和类别(如果不为空)