Быстрый построчный полнотекстовый поиск для структуры каталогов Unix

435
knipknap

Я пытаюсь создать графический интерфейс для поиска по большому количеству огромных файлов конфигурации (около 60000 файлов, каждый размером от 20 КБ до 50 МБ). Эти файлы также часто обновляются (~ 3 раза в день).

До сих пор я нашел SOLR и Sphinx, но не нашел способа заставить их возвращать список совпадающих строк, включая номер строки для каждого соответствующего документа.

В настоящее время мы конвертируем каждый текстовый файл в XML:

<xml> <line number="1">foobar</line> <line number="2">barfoo</line> ... </xml> 

и сохраните результат в eXist-db. Однако хранение документов происходит слишком медленно, поэтому нам нужна альтернатива.

Есть идеи получше?

1

1 ответ на вопрос

0
RedGrittyBrick

Мнение: Если у вас есть большие объемы изменчивых текстовых данных, к которым вам нужен быстрый доступ, преобразование их в XML усложнит решение ваших проблем.

Есть идеи получше?

Оставить файлы в виде текста и использовать Lucene ?

(Я предполагаю, что grepэто не сокращает это)

«Некоторые люди, столкнувшись с проблемой, думают:« Я знаю, я буду использовать XML ». Теперь у них две проблемы». Paul 12 лет назад 1
Единственный способ сделать номера строк в Lucene - это сохранить каждую строку в отдельном документе. Это, однако, делает обновление документа трудным (и, вероятно, невозможно сделать обновления быстро). knipknap 12 лет назад 0
@knipknap: я не могу работать, если это так [этот пример] (http://www.tom-carden.co.uk/2007/08/01/a-quick-less- sure-note-on-using -люцен-в-обработке /) делает это. ([Апплет с источником] (http://www.tom-carden.co.uk/p5/simple_lucene_demo/applet/)) RedGrittyBrick 12 лет назад 0
Демонстрация добавляет только один файл, но да, она сохраняет каждую строку в виде отдельного документа, используя цикл в комментарии «вытащить данные из нашего списка и добавить их в индекс» в SimpleLucene.java. Так как они не делают обновления, это не проблема. knipknap 12 лет назад 0

Похожие вопросы