使用MariaDB的SphinxSE基本语法问题

时间:2012-07-08 03:31:43

标签: php mysql full-text-search sphinx mariadb

我正在考虑使用SphinxSE将当前的MySQL数据库转换为MariaDB 5.5。我无法找到任何真正的基本“是的,你是一个白痴”关于使用MariaDB附带的SphinxSE的教程。

我理解AskMonty的这个tutorial的第一部分关于如何安装插件,但它开始进入基本用法,这就是我的大脑开始进入脑屁模式的地方。我理解创建特殊表的必要性,但最后给我留下了一些问题。在示例中,它表示需要id,weight和query,并且需要特定设置。但是,您在该表中可以拥有的以下附加字段不一定有意义。当MySQL向Sphinx的searchd发出查询并且结果返回到此表时,这个特殊的表是动态构建的吗?或者这个表是否包含由searchd填充的大量关键字?

根据关于Sphinx的this文档(以及articles我发现helpful}的文件,我不太确定SphinxSE的“照顾”是什么以及什么我仍然需要设置。我假设我还需要在sphinx.conf文件中设置索引?或者它们是否通过查询传递的属性以某种方式设置在特殊表中?

所以现在你知道我有多困惑,这基本上是我想要帮助的东西。让我假装我刚刚成功安装了MariaDB,并安装了包含的SphinxSE插件。在我想象的数据库中,我有3个表,我想使用Sphinx的全文搜索功能。

--
-- Table structure for table `page_articles`
--

CREATE TABLE IF NOT EXISTS `page_articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `page_id` int(11) NOT NULL,
  `body` longtext NOT NULL,
  PRIMARY KEY (`id`),
  KEY `page_id` (`page_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `page_comments`
--

CREATE TABLE IF NOT EXISTS `page_comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `comment` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `page_content`
--

CREATE TABLE IF NOT EXISTS `page_content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `content` longtext NOT NULL,
  `meta_keywords` text NOT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `content` (`content`,`meta_keywords`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

从这一点开始,我该怎么做才能正确设置我需要的索引?就像我说的那样,我阅读了几篇文章并且关于如何选择字段进行索引,或者如果你只选择MySQL全文索引并且该索引为你选择字段?在我正确设置了一些索引之后,我将如何开始使用一些搜索查询来从这些表中提取数据?我理解普通MySQL全文搜索的语法(SELECT ... FROM table MATCH(blah_index)AGAINST(keywords))但我不知道它是如何或者是否仍在SphinxSE版本中使用。任何额外的帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:3)

SphinxSE只是一个界面,可让您使用mysql查询sphinx服务器。你仍然需要单独设置sphinx。

本文介绍如何使用界面:Using SphinxSE

但请注意表格定义的这一部分:CONNECTION="sphinx://localhost:9312/test";

这就是你告诉它连接到你现有的sphinx服务器的地方。有很多文档可以解释如何设置sphinx。事实上,甚至还有一篇链接在sphinx网站上的文章,它引导您完成设置MySQL的所有工作:Sphinx & MySQL