Правило 10% опирается на ряд предположений:
- Корпус содержит файлы с прозой из человеческого языка
- Файлы в среднем достаточно большие по сравнению с их метаданными
- Корпус не содержит кодовых файлов (.cpp, .cs, ect)
Номер 3 объясняется тем, что индекс сжимается на диске, предполагая, что слова будут часто повторяться. Это верно для большей части текста (проверьте, сколько раз в вашем индексе появляется «the»), но для кода так много уникальных «слов» из имен переменных, что это нарушает это предположение.
В вашем случае, хотя я подозреваю, что проблема № 2, много маленьких файлов. Существует фиксированный объем служебных данных метаданных, который поставляется с каждым файлом, который необходимо сохранить в индексе. Например, индекс должен хранить полный путь, дату изменения, дату создания и т.д. Для каждого файла поверх содержимого. Это составляет примерно 3 КБ на файл, и, если средний размер файла составляет 4-5 КБ, это, скорее всего, проблема.
Если поиск важен и вы не можете объединить файл, я рекомендую отключить индексирование содержимого тех типов файлов, которых у вас много. Это должно несколько уменьшить размер, сохраняя метаданные файла для поиска.