Lucene Engine and non-english PDF and Ms Office documents

pinguin

Новичок
Lucene Engine and non-english PDF and Ms Office documents

Разрабатываю компонент (модуль) индексации файлов формата PDF and MS OFFICE. Так как количество файлов довольно большое (не менее 50 000), то как решение был взят за основу механизм индексации от Apache Group Lucene (www.lucene.apache.org). Индексировать нужно как сами документы, так и их содержание (для реализации поиска). Вопрос следующий: текст документов (даже и названия) на английском и иврите. С английским проблем нет, а вот с последним множество. Умеет ли Lucene индексировать документы на иврите в частности? Если не умеет, то можно ли несколько советов как реализовать данную фичу.

зы. если умеет индексировать, то желательно кратко описать механизм.
зызы. еще, если возможно, хотелось бы посоветоваться насчет организации поиска "на иврите". Тоже механизм в двух словах.


MySQL Version: 4.1.19-standard
PHP Version: 5.1.4
Web Server: Apache/2.0.54 (Linux/SUSE)
WebServer to PHP interface: apache2handler

если важны эти данные
 

lucas

Новичок
Умеет ли Lucene индексировать документы на иврите в частности? Если не умеет, то можно ли несколько советов как реализовать данную фичу.

зы. если умеет индексировать, то желательно кратко описать механизм.
Эти вопросы лучше адресовать мануалу по использованию этого продукта, либо его разработчикам, не так ли?

хотелось бы посоветоваться насчет организации поиска "на иврите". Тоже механизм в двух словах.
Вот кусочек с myhebrew.info:
Иврит использует для письма «квадратный шрифт», как и языки арамейский и идиш. «Квадратный шрифт» основывался в начертаниях букв на повторении сторон квадрата, отсюда и произошло название. Квадратный шрифт — это вид алфавита. Означает, что каждый значок шрифта (буква) соответствует определенному звуку. В отличие от этого при письме иероглифами (египетские, китайские) каждый значок соответствует определенному понятию (слову) и не связывается со звуками. Ивритский квадратный шрифт состоит из 22 букв.
Следовательно, все сводится к поиску набора символов, содержащего и символы латиницы, и символы еврейского алфавита.

Скорее всего, такому определению соответствует UTF-8.
Вот и проверь поддержку UTF-8 в Lucene.
 

pinguin

Новичок
Эти вопросы лучше адресовать мануалу по использованию этого продукта, либо его разработчикам, не так ли?
В том то и дело, что в мануале таких сведений нет, а если и есть, то их я не нашел. Если бы мне было все понятно, то разве я задавал бы здесь какие-то вопросы? Может есть люди, которые с таким сталкивались и знают как решать эту проблему. Собственно данное сообщение адресовано именно им.
Скорее всего, такому определению соответствует UTF-8.
Вот и проверь поддержку UTF-8 в Lucene.
да, как я понимаю, поддерживает.
Lucene writes unicode character sequences using Java's "modified UTF-8 encoding".
По поводу поиска: нужно искать по заданным ключевым словам в документе PDF или MS OFFICE, возвращать список документов, где заданное слово/словосочетание содержится. Я предполагаю 3 механизма осуществления этого:

1. индексирующий модуль (Lucene) индексирует текстовые документы в заданной области. В процессе индексирования составляется индекс, состоящий из списка идентификаторов слов и набора ссылок при каждом идентификаторе, которые (ссылки) указывают, в каких текстовых документах встречается данное слово. Процесс индексирования происходит следующим образом. При помощи обработчика формата документа происходит извлечение из документа текстовой информации, выделение из текста слов, подсчет их координат. Затем формируется последовательность слов документа вместе с их координатами. Далее из этой последовательности удаляются все неинформативные слова, а оставшиеся преобразуются в идентификаторы слов. Идентификатор и координаты слова добавляются в индекс со ссылкой на обрабатываемый документ.

На втором этапе (поиск) поисковый запрос схожим образом преобразуется в набор идентификаторов, которые отыскиваются в индексе, а далее по ссылкам выбираются нужные текстовые документы. Информация о координатах слов в документах позволяет осуществлять подсветку найденных слов.
(механизм мною нагло сперт не помню откуда)
2. С помощью стандартных команд unix банально при запросе каждый раз проводить поиск (ie. grep) (мда, не подумал насчет MS OFFICE документов, скорей всего в среде unix поиск в этих файлах осуществляться не будет? Или будет?)
3. Различными библиотечными функциями PHP (ие. открыть файл -> посмотреть в нем искомое -> если нашли, запомнить, если не нашли пропустить и так далее) соответственно в реал-тайме по каждому запросу.

Что быстрее и оптимальнее для огромного количества файлов? Размер файлов стандартный среднестатистический, но не может быть исключена возможность, что файл(ы) будут весить гигабайты.
Третий вариант само собой, я думаю, отпадает сразу, так что по существу вопрос в первых двух. Если у вас есть еще варианты, то с удовольствием выслушаю.

Запрещается использование каких-либо БД
 

lucas

Новичок
В случае использования способа 2 для поиска пропадает смысл применения этой Lucene. (Особенно учитывая то, что он абсолютно нежизнеспособен.)

Раз она позволяет индексировать, должна предоставлять возможности для поиска.
Если нет -- реализуй поиск по индексу самостоятельно.

Это представляется самым оптимальным вариантом.
Так что марш читать мануал по поводу поиска в Lucene.
 

pinguin

Новичок
ок, спасибо за совет. Только Lucene это было в первом вопросе для индексации файлов, а это уже второй вопрос про поиск в файлах. Да, Lucene умеет искать, этой возможностью я тогда и воспользуюсь. Еще раз спасибо за помощь!
 
Сверху