通过SphinxSE插入

时间:2014-05-21 22:27:24

标签: 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 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

根据this comment from MariaDB KB,可以通过SphinxSE INSERT / UPDATE / DELETE rt索引,但我不知道如何......

  

虽然理论上现在可以让它代理INSERT,DELETE   和Sphinx的其他写作,它从来没有最初为此设计,   所以改变可能很麻烦。

1 个答案:

答案 0 :(得分:1)

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

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

......所以现在不可能。但如果有人编写代码就可以这样做。

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