由於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