DSpace и поисковые индексы в SOLR

Суть в том, что особенность 3 и 4 версии обнаружилась нехорошая:

Допустим, делаешь dspace index-init. Метаданных у тебя куча, и делается процедура минут 20, во время которой сервис лежит. Потом делаешь dspace filter-media -f, допустим у тебя при этом десять тысяч документов. Процедура делается часа четыре, но в итоге все счастливы.

 

Работает и полнотекстовый поиск и поиск по метаданным. Все счастливы и пьют шампанское на автостоянке… ведь эту процедуру нужно сделать лишь однажды после обновления.

 

НО! Допустим, захотелось нам взять, да и поправить одну запись по метаданным, ну забыли кавычку закрыть или опечатка где-то. Поправили, дали команду dspace index-update и… оказывается, теперь и кэш поиска по метаданным и кэш поиска по полному тексту для каждого ITEM — есть одно целое и лежит в SOLR 🙂 В общем, в результате разовой или что хуже, пакетной правки метаданных и последующего index-update мы получаем исчезновение полнотекстовой части индекса обновляемых ITEM’ов. А это значит — filter-media -f и четыре часа. Круто?

 

В принципе есть вариант разнести поисковый и полнотекстовый индексы в discovery и solr, но что делать если я вдруг не хочу discovery здесь и сейчас? Правильно, делать filter-media -f.

Рубрика: Библиотека | Метки: , | Оставить комментарий

Dspace, дополнительный реестр метаданных и ошибки статистики.

Рано или поздно многие пользователи системы DSpace сталкиваются с нехваткой возможностей стандартного реестра метаданных DublinCore. Кому-то необходимо отдельным полем описать код специальности ВАК, кому-то указать даты проведения конференции, кому-то уточнить источник поступления/оцифровки документа, или его тип.

В принципе, DSpace позволяет ввести дополнительный реестр метаданных, который, например, можно назвать local.

Пример использования дополнительных полей можно найти тут.

Если внести новые «поля» в параметр webui.itemdisplay.default файла dspace.cfg и соответствующим образом модифицировать перевод — поля нового реестра метаданных можно без проблем созерцать и в кратком виде записи, в т.ч. на нескольких языках, как, например, тут.

Всегда есть соблазн дополнить существующий DC реестр метаданных, но тогда начинаются проблемы с импортом и экспортом, PMH харвестом и другими процедурами, в рамках которых от DSpace ждут чистый DublinCore.

Ситуация, описываемая далее характерна для «старых» версий DSpace, версия 4.1 от неё свободна, а заключается ситуация в следующем — вводим реестр метаданных local, вводим поле local.type, запускаем dspace stat-initial и получаем:

C:\dspace>dspace stat-monthly
Using DSpace installation in: C:\dspace
Exception: ОШИБКА: подзапрос в выражении вернул больше одной строки
org.postgresql.util.PSQLException: ОШИБКА: подзапрос в выражении вернул больше одной строки
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1531)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1313)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:258)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        at org.dspace.storage.rdbms.DatabaseManager.query(DatabaseManager.java:284)
        at org.dspace.storage.rdbms.DatabaseManager.querySingle(DatabaseManager.java:330)
        at org.dspace.app.statistics.LogAnalyser.getNumItems(LogAnalyser.java:1255)
        at org.dspace.app.statistics.LogAnalyser.processLogs(LogAnalyser.java:498)
        at org.dspace.app.statistics.CreateStatReport.statMonthly(CreateStatReport.java:181)
        at org.dspace.app.statistics.CreateStatReport.main(CreateStatReport.java:121)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:183)

C:\dspace>

Суть в том, что в некоторых версиях DSpace имел место такой вот кривенький SQL запрос:

SELECT COUNT(*) AS num FROM item WHERE in_archive = TRUE AND withdrawn = FALSE  AND item_id IN ( SELECT item_id FROM metadatavalue WHERE metadata_field_id = ( SELECT etadata_field_id  FROM metadatafieldregistry  WHERE element = 'date'  AND qualifier = 'accessioned')  AND text_value::TIMESTAMP > '2013-12-01'::TIMESTAMP  AND text_value::TIMESTAMP < '2013-12-31'::TIMESTAMP )  AND item_id IN ( SELECT item_id FROM metadatavalue WHERE text_value LIKE '%Thesis or Dissertation%' AND metadata_field_id = ( SELECT metadata_field_id  FROM metadatafieldregistry  WHERE element = 'type'  AND qualifier IS NULL) );

Который собственно два значения и возвращал. Если перевести запрос в человекопонятный вид, то он будет звучать так: Найдем все поля *.type со значением Thesis or Dissertation в промежутке от 01.12.2013 до 31.12.2013, сложим их, и выдадим результат. Но проблема в том, что и dc.type и local.type под эти условия попадают. И возвращает система два результата, в случае с local.type она возвращает ноль.

Данная ситуация была описана здесь в 2011 году в пору актуальности DSpace 1.7, но не была исправлена и в 1.8. Там человек получил ту же проблему, использовав дополнительный реестр метаданных от плагина Europeana.

Собственно, решения у данной проблемы три:

  • 1. Обновить DSPACE
  • 2. Избегать совпадения названий полей реестра метаданных DC и своего собственного. Имеющуюся проблему легко устранить просто переименовав поле в реестре метаданных один раз и поправить перевод и файл конфигурации DSpace.
  • 3. Залезть в код DSpace и модифицировать SQL запрос, до вида:
    SELECT COUNT(*) AS num FROM item WHERE in_archive = TRUE AND withdrawn = FALSE  AND item_id IN ( SELECT item_id FROM metadatavalue WHERE metadata_field_id = ( SELECT metadata_field_id  FROM metadatafieldregistry  WHERE element = 'date'  AND qualifier = 'accessioned')  AND text_value::TIMESTAMP > '2014-08-01'::TIMESTAMP  AND text_value::TIMESTAMP < '2014-08-31'::TIMESTAMP )  AND item_id IN ( SELECT item_id FROM metadatavalue WHERE text_value LIKE '%Thesis or Dissertation%' AND metadata_field_id = ( SELECT metadata_field_id  FROM metadatafieldregistry  WHERE element = 'type'  AND qualifier IS NULL LIMIT 1) );
Рубрика: Библиотека | Метки: | Оставить комментарий

Материнские платы ABIT и Socket 771 CPU microcode

FAQ основной:

  • Q1: Моей платы нет в списке на этой странице, она вообще поддерживается?
    A1: Поддерживаются практически все платы на Intel P965/G965, G3x/P3x, G4x/P4x чипсетах, а так же на чипсетах nForce 6xx/7xx с некоторыми оговорками. Можете поискать свою плату здесь.
     
  • Q2: По ссылке выше моя плата есть, но в списке ниже её нет, где брать BIOS?
    A2: Просмотрите здесь или здесь, рекомендуется искать свою плату по бренду и далее поиском по Ctrl+F на странице.
     
  • Q3: Там тоже нет моей платы. Что делать?
    A3: Попросите BIOS в комментариях к этому сообщению, если Ваша плата ОЕМ/редкая/пр. дайте ссылку на оригинал BIOS’а, укажите модель платы и версию BIOS. Так же Вы можете сделать мод самостоятельно, воспользовавгисб инструкцией для AWARD, AMI, или универсальной.
     
  • Q4: У меня остались вопросы, где я могу их задать?
    A4: Здесь не форум. Здесь нулевая проходимость, не стоит ожидать какой-то реакции на вопросы, напрямую не связанные с запросами модов. Если Ваша система не стабильна, Вы не знаете как прошить BIOS, не знаете какой процессор выбрать, не знаете как разогнать систему либо у Вас есть иные вопросы, напрямую не связанные с запросом модификации, задайте их здесь.
     
    Читать далее
Рубрика: 771mod, Железки | Метки: , , , | 205 комментариев

ВНИМАНИЕ!

В течении августа 2014 года сайт (как и автор) будет в отпуске. Комментарии скорее всего будут проверены и подтверждены лишь к концу августа или даже началу сентября. Запросы на модификацию BIOS, равно как и иные запросы оперативно разрешены не будут.

Рубрика: Без рубрики | 3 комментария

SLIC отписка

Хотелось бы начать с акцентирования внимания на том, что я являюсь противником как пионерских, так и профессиональных сборок WINDOWS. Под пионерскими имеются в виду ZVERDVD и им подобные, под профессиональными — сборки от вендоров типа HP/MSI/LENOVO и пр. в основном предназначенные для брендовых ПК и ноутбуков. Я в принципе согласен жить в мире, в котором существуют сборки со встроенными неведомыми программами, обновлениями и даже активаторами, но… без них было бы куда проще.

Дальнейший текст имеет смысл читать только если используется более или менее чистая версия WINDOWS VISTA/7 без серьезных вмешательств и активаторов.

И так, что же такое SLIC в первом приближении? Ответ на данный вопрос будет максимально упрощён — это механизм, позволяющий относительно честно активировать WINDOWS VISTA/7 (кроме Enterprise) при соблюдении трех необходимых условий.

Условия следующие:

  • 1. Наличие в BIOS материнской платы или ноутбука SLIC таблиц.
  • 2. Наличие в операционной системе сертификата.
  • 3. Наличие у пользователя серийного номера необходимой редакции операционной системы.

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

И так, если в BIOS нет SLIC таблиц, то возможны два варианта — найти готовый модифицированный BIOS в сети, либо сделать его самому. Первый вариант делается через google, второй собственно тоже. Все оснастки доступны и инструкции по ним так же есть. Да есть подводные камни, например, модифицировать BIOS от INTEL очень сложно, от MSI не очень, но сложно, а еще в BIOS может не быть места даже под сертификат, но вероятность этого мала. А если у Вас ноутбук с наклейкой Windows 7 (Home Premium к примеру), то Вы легко можете установить ULTIMATE, ибо SLIC таблицы BIOS одинаковы под все редакции ОС!

Что касается сертификата, он обычно либо приложен к модифицированному BIOS, либо к модифицирующей оснастке. Тут никаких гвоздей нет, разве что нужно иметь администраторские права на активируемом ПК и желательно отключить UAC на время активации.

С серийными номерами примерно то же самое что и с сертификатами, они все свободно доступны. Никаких гвоздей почти нет, разве что не все производители позволяют использовать все версии ОС. Так, например, Toshiba не имеет ключа на Windows 7 Ultimate, только на Professional и в таком духе. Поэтому мне и нравится ASUS для материнских плат (есть все номера) и для безымянных ноутбуков. В ноутбуках с «родными» SLIC таблицами лучше использовать «родные» сертификат и номер.

В общем, получается такая картина: прошиваем BIOS, интегрируем в ОС сертификат, вводим серийный номер и всё. ОС активирована и распознаётся так, будто у нас ОЕМ версия ОС, купленная вместе с брендовой железкой. Обновления работают, валидация проходит, антивирусы не мочат активаторов, потому, что их (активаторов) просто нет. В общем всё ведет себя так, будно у нас ноутбук/ПК, купленный с ОС.

Конкретной инструкции о том, как модифицировать BIOS или о том где взять ключи и сертификаты не будет. Данная заметка написана исключительно для того, чтобы объяснить что такое SLIC тем, кто пользуется моими модами BIOS. Мои моды более не содержат SLIC таблиц.

Рубрика: Программки | Метки: , , | 95 комментариев