繁体   English   中英

通过SphinxSE插入

[英]INSERT through SphinxSE

我在SphinxSearch 2.1.8上定义了实时索引(RT索引):

index rt
{
    type = rt
    path = /var/lib/sphinxsearch/data/rt
    rt_field = url
}

然后,我使用SPHINX Storage Engine在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

根据MariaDB KB的这一评论,可能可以通过SphinxSE插入/更新/删除rt索引,但是我不知道如何...

从理论上讲,现在可以让它代理INSERT,DELETE和其他对Sphinx的写入,但是它最初并不是为此目的而设计的,因此更改可能很麻烦。

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

但是如前所述,它并不是为此而设计的(例如,它在表定义中使用了SphinxAPI端口-因此需要找到另一种方式告知引擎使用SphinxQL端口)-这将很难做到。

...所以现在不可能。 但是,如果有人编写了代码可以做到这一点。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM