我在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的其他写作,它从来没有最初为此设计, 所以改变可能很麻烦。
答案 0 :(得分:1)
该评论称理论可以修改SphinxSE引擎的源代码,以启用此类更新。基本上它会使SphinxQL连接到sphinx,并发出适当的命令。
但是正如所指出的那样它并不是为此设计的(例如它在表定义中需要一个SphinxAPI端口 - 因此需要找到另一种方法来告诉引擎使用SphinxQL端口) - 这将很难做到。
......所以现在不可能。但如果有人编写代码就可以这样做。
修改应用程序以将SphinxQL直接与Sphinx对话可能要容易得多。