由于this question中概述的原因,我建立了自己的客户端搜索引擎,而不是使用基于fullproof
的ydn-full-text
库。归结起来,fullproof
会产生300.000条记录的“太多令人震惊的记录”,而(在发音之后),只有大约7700个独特的词。所以我的“理论”是fullproof是基于其仅适用于服务器端的传统假设:客户端搜索引擎优化
- 巨大的指标都很好
- 处理器电源价格昂贵
- (和处理更长的记录的假设这仅仅是适用于我的情况下,我的记录是平均24个字只有)
而在客户端:
- 巨大的指数采取年龄来填充
- 处理能力仍然是有限的,但不是在服务器端
基于这些假设我有一个基本的倒排索引(给刚7700记录作为开始的相对便宜IndexedDB
是一个文档/ nosql数据库)。使用兰开斯特词干(这是两种或三种流行词汇中最具侵略性的一种)推测这个倒排索引,并且在搜索期间,我将检索每个词的索引,根据不同索引的重叠和相似度输入单词vs原始(Jaro-Winkler距离)。
问题这种方法的:
- 结合“popular_word + popular_word”的极其昂贵
所以,终于等到我的问题:我如何能缓解上述问题以最小的增长的索引?我确实明白我的方法是CPU密集型的,但是由于传统的全文搜索索引看起来非常大,这似乎是唯一合理的途径。 (指着我好资源或作品也可以理解)
这是非结构化的文本翻译成小片段,但这种人为的分裂相关领域标准化的或多或少的人为分割所以一直在这里所用好。我还没有研究过将这些“片段”放在一起并在fullproof
上投掷大量文本的索引大小的影响。我认为这不会产生巨大的影响,但如果我错了,那么请指出这一点。
'openKeyCursor'和'continuePrimaryKey'真棒! –
continuePrimaryKey这是有些只能在chrome中使用的东西吗?另一种方法是用nextunique或prevunique的方向打开openkeycursor –
我还没有完全包围我的头,但我认为'continuePrimaryKey'允许你同时使用两个不同的索引:被查询的索引和“主要”指数。 – buley