Из-за причин, изложенных в this question. Я создаю свою собственную поисковую машину на стороне клиента, а не используя библиотеку ydn-full-text
, которая основана на fullproof
. То, что это сводится к тому, что fullproof
порождает «слишком большое количество записей» в размере 300 000 записей, а после (после его окончания) всего около 7700 уникальных слов. Так что моя «теория» является то, что fullproof основан на традиционных допущениях, которые распространяются только на стороне сервера:Оптимизация поисковой системы на стороне клиента
- Огромные индексы прекрасны
- мощность процессора дорого
- (и предположение о работе с более длинными записями который только применимо к моему случаю, когда мои записи в среднем 24 слов только)
в то время как на стороне клиента:
- Огромные индексы принимают возраст для заполнения
- Обработки мощности по-прежнему ограничена, но сравнительно дешевле, чем на стороне сервера
Исходя из этих предположений, я начал не с элементарным инвертированным индексом (дают только 7700 записи, как IndexedDB
- это база данных document/nosql). Этот инвертированный индекс был создан с использованием стэнмера Ланкастера (наиболее агрессивного из двух или трех популярных), и во время поиска я бы получил индекс для каждого слова, назначил оценку, основанную на перекрытии разных индексов и на сходстве типичного слова против оригинала (расстояние Яро-Винклера).
Проблема этого подхода:
- Комбинация «popular_word + popular_word» очень дорого
Итак, наконец-то на мой вопрос: Как я могу облегчить вышеупомянутую проблему с минимальным ростом индекса? Я понимаю, что мой подход будет интенсивным, но как традиционный полнотекстовый индекс поиска кажется необычно большим, это, по-видимому, единственный разумный путь. (Показывая мне хорошие ресурсы или произведение также оценил)
Это более или менее искусственное расщепление неструктурированных текстов на небольшие сегменты, однако это искусственное расщепление стандартизировано в соответствующей области, так было использовано здесь Что ж. Я не изучал влияние на индексный размер хранения этих «фрагментов» и бросал огромные куски текстов по адресу fullproof
. Я предполагаю, что это не будет иметь большого значения, но если я ошибаюсь, пожалуйста, укажите это.
'openKeyCursor' и' continuePrimaryKey' awesome! –
continuePrimaryKey это что-то, что можно использовать только в хроме? Другой способ - просто открыть openkeycursor со следующего или предыдущего направления. –
Я еще не полностью обернул вокруг себя голову, но я думаю, что 'continuePrimaryKey' позволяет одновременно использовать два разных индекса: запрашиваемый индекс и «первичный» индекс. – buley