将 Sphinx 索引转换为 Table?

Convert Sphinx Index to Table?

为了将数百万条记录转换成 usable/searchable sphinx 索引,我每天都要进行相当紧张的 sphinx 配置。

但是我现在需要将其导出为 xml 文件,如果不是,则导出为新的 table。

当然,我也可以在 Mysql 中完成我在 Sphinx 索引中所做的工作 most/all,但如果我刚刚生成 Sphinx 索引,这似乎有很多不必要的工作。我能以某种方式 'export' 索引到 table 还是全文索引现在对我来说作为可读数据基本上没用了?

嗯,这取决于你想要什么。

Sphinx 索引本质上是一个倒排索引。 https://en.wikipedia.org/wiki/Inverted_index

... 因此它有助于查找哪个 'documents' 包含给定的单词,它会将其随意存储为列表。 (非常适合查询的基本功能!只需 sphinx 就可以完成 multi-word 查询以及排名结果的繁重工作)

...这样的结构不是按文档组织的。所以不能直接获取给定文档中的单词列表。 (计算 htat 必须遍历整个数据结构)


但是如果它是你想要的倒排索引可以用 indextool 转储它 http://sphinxsearch.com/docs/current.html#ref-indextool ... 例如 --dumpdict 甚至 --dumphitlist 命令。 (尽管 dumpdict 仅适用于 dict=keywords 索引)


您可能对 indexer 上的 --dump-rows 选项感兴趣 http://sphinxsearch.com/docs/current.html#ref-indexer ... 它在索引期间转储文本数据,从 mysql 检索。

它不会从索引本身转储,并且不受所有 'magic' 标记化和规范化 sphinx 的影响(charset_table/wordforms 等)


回到indextool还有--fold--htmlstrip--morph,它们可以在流中用来标记文本。

理论上可以使用这些来使用 sphinx 的 'power',以及来自实际索引的设置,以创建处理过的数据集(类似于 sphinx 正在生成索引)