Sphinx 通过狮身人面像插入

Sphinx 通过狮身人面像插入,sphinx,mariadb,Sphinx,Mariadb,我在SphinxSearch 2.1.8中定义了一个实时索引(RT索引): index rt { type = rt path = /var/lib/sphinxsearch/data/rt rt_field = url } 然后,我使用SPHINX存储引擎在MariaDB 10.0.11中声明了一个表: CREATE TABLE `rt` ( `id` bigint(20) unsigned NOT NULL, `weight` int(11) NOT NUL

我在SphinxSearch 2.1.8中定义了一个实时索引(RT索引):

index rt
{
    type = rt
    path = /var/lib/sphinxsearch/data/rt
    rt_field = url
}
然后,我使用SPHINX存储引擎在MariaDB 10.0.11中声明了一个表:

CREATE TABLE `rt` (
  `id` bigint(20) unsigned NOT NULL,
  `weight` int(11) NOT NULL,
  `query` text NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  KEY `query` (`query`(1024))
) ENGINE=SPHINX DEFAULT CHARSET=utf8 CONNECTION='sphinx://127.0.0.1:9312/rt';
是否可以通过SphinxSE表将数据插入我的RT索引?

尝试插入时,出现以下错误:

MariaDB [mydb]> INSERT INTO rt(id, url) VALUES (1, 'http://www.stackoverflow.com');
ERROR 1031 (HY000): Storage engine SPHINX of the table `mydb`.`rt` doesn't have this option
据我所知,通过SphinxSE插入/更新/删除rt索引是可能的,但我想知道如何

从理论上讲,现在可以让它代理插入、删除 还有其他写给狮身人面像的信,它最初并不是为这个设计的, 因此,这种改变可能会很麻烦


该评论称,修改SphinxSE引擎的源代码以启用此类更新是可能的。基本上,它将使SphinxQL连接到sphinx,并发出适当的命令

但正如所指出的那样,它并不是为此而设计的(例如,它在表定义中使用了一个SphinxAPI端口——因此需要找到另一种方法来告诉引擎要使用的SphinxQL端口)——这将有点困难

。。。所以现在不可能。但是,如果有人编写了这样做的代码,这是可能的


修改应用程序以将SphinxQL直接与Sphinx对话可能要容易得多

谢谢你的澄清。事实上,我的目标是使用mysql触发器更新rt索引。我必须找到另一个解决方案。理论上,我可以使用连接引擎。它代理底层mysql表,因为sphinxql索引看起来“像”一个mysql表,所以它可能工作得很好。