LIBCAS / DL4DH

DL4DH – development of tools for effective utilization and mining of data from digital libraries to reinforce digital humanities research
GNU General Public License v3.0
8 stars 2 forks source link

Dotazy na INOVATIKU #10

Closed bodnarIQ closed 3 years ago

bodnarIQ commented 3 years ago

Dotazy na INOVATIKU

Význam a využitie niektorých fieldov v SOLR indexe

Dotazy vseobecne

D:\git\kramerius\kramerius>java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)

D:\git\kramerius\kramerius>gradle :search:clean :search:build --stacktrace

> Configure project :
Building K4-K5; please read BUILD-README.txt

> Task :search:compileJava
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :search:infofile
Created build file D:\git\kramerius\kramerius\search\build\resources\main\build.properties

> Task :search:processResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':search:processResources'.
> java.io.IOException: Unable to delete file: D:\git\kramerius\kramerius\search\build\resources\main\build.properties

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':search:processResources'.
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:38)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.UncheckedIOException: java.io.IOException: Unable to delete file: D:\git\kramerius\kramerius\search\build\resources\main\build.properties
        at org.gradle.util.GFileUtils.forceDelete(GFileUtils.java:268)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter$1.run(CleanupStaleOutputsExecuter.java:81)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:75)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        ... 24 more
Caused by: java.io.IOException: Unable to delete file: D:\git\kramerius\kramerius\search\build\resources\main\build.properties
        at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2400)
        at org.apache.commons.io.FileUtils.cleanDirectory(FileUtils.java:1721)
        at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1617)
        at org.apache.commons.io.FileUtils.forceDelete(FileUtils.java:2391)
        at org.gradle.util.GFileUtils.forceDelete(GFileUtils.java:266)
        ... 38 more

* Get more help at https://help.gradle.org

BUILD FAILED in 7s
72 actionable tasks: 5 executed, 67 up-to-date
rzeh4n commented 3 years ago

field geographic_names - čo reprezentuje, na čo sa využíva?

Místo s nějakým vztahem k dílu. Získává se ze (MODS) subject/geographic. Používá se k filtrování a facetování podle geografického názvu. http://www.digitalniknihovna.cz/mzk/search?geonames=%C5%98%C3%ADm%20(It%C3%A1lie)

field publication_places - čo reprezentuje, na čo sa využíva? priklad - Ide o miesto publikácie získané z MODS - mods:publisher(v príklade vyššie “Jihomoravský kraj”) alebo mods:subject -> mods:geographic(“Česko”, “Czechia” , oboje indexované 8 krát?)

Jde o místo vydání. Použijí se hodnoty z originInfo/publisher, ne subject/geographic https://github.com/ceskaexpedice/kramerius/blob/ea2a56b103f68f01d6649887816e17760b12d9b9/search-index/src/test/resources/xmlTests/publication.xml#L148

Je nejaký dôvod pre ukladanie hodnôt(stored=true) pre fieldy x.facet a x.sort a nevyužívanie copyField-ov pri týchto fieldoch?

Některá .facet pole se liší od .search, třeba v předchozím příkladu jsou jde vidět, že keywords.search jsou v uppercase.

Na čo sa využívajú fieldy own_pid_path a own_model_path?

Podobně, jako u předchozího indexu se třeba own_pid_path použije k filtrování vyhledávání na dílo, nebo jeho část. Aniž by to byl nutné top-level objekt. Je tu rozdíl v tom, že own_pid_path a own_model_path je vždy jen jeden a váže se k vlastnímu stromu každého objektu, tj. stromu z vlastních rodičů. Např. stránka má vlastního rodiče vydání, to zase ročník a ten periodikum. Ale stránka může mít nevlastního rodiče - článek přes vazbu isOnPage.

Na čo sa využíva field rels_ext_index? Kedy sa sortuje podľa tohto fieldu?

Na řazení tam, kde to nejde jinak, protože chybí (nebo jsou zapsána špatně) data, např. explicitní čísla stránek. Až jako fallback, je to ta pozice mezi sourozenci v rels_ext.

Kedy má objekt definovaného foster_parent-a ?

Pokud na něj vede nevlastnická vazba, tedy buď isOnPage (článek, vnitřní část), nebo contains (sbírka).

Rozdiel medzi in_collections a in_collections.direct? Field definuje, v akých kolekciách sa objekt nachádza, ide o id zbierky, používa sa to pri novinách/časopisoch? (model - periodical)

V in_collections.direct má pid sbírky ten objekt, který sbírka přímo obsahuje, tedy odkazuje se na něj v rels_ext přes vazbu contains. V in_collections má pid sbírky každý potomek (i nevlastní, třeba článek) objektu, který je ve sbírce přímo. Tím pádem lze přes in_collections filtrovat na vše, co do sbírky patří.

Využitie fieldu level?

Na filtrování top-level objektů.

Date.min a date.max? “Začátek intervalu který obsahuje objekt” - co znamená ? Kedy je objekt definovaný intervalom? Čo interval vyjadruje? (datum vydání?)

Ano, jde o datum vydání. Ten interval obsahuje celou dobu v timestampech, kdy bylo dílo vydáváno, ale může být větší. Třeba když bylo periodikum vydáno naposledy 15.3. 1947, ale v metadatech je uvedeno jen 1947, bude končit půlnocí posledního dne v roce. Např.:

<dateIssued>3.-12.2.1952</dateIssued>
<field name="date.max">1952-02-12T23:59:59.999Z</field>
<field name="date.min">1952-02-03T00:00:00.001Z</field>

<dateIssued>1947</dateIssued>
<field name="date.max">1947-12-31T23:59:59.999Z</field>
<field name="date.min">1947-01-01T00:00:00.001Z</field>

<dateIssued point="start">7.1947</dateIssued>
<dateIssued point="end">2.1952</dateIssued>
<field name="date.max">1952-02-29T23:59:59.999Z</field>
<field name="date.min">1947-07-01T00:00:00.001Z</field>

Více v tested, zejména dateIssued*: https://github.com/ceskaexpedice/kramerius/tree/ea2a56b103f68f01d6649887816e17760b12d9b9/search-index/src/test/resources/xmlTests

Čo sa ukladá do fieldov coords._ ? Koordináty čoho?

Bounding box a střed typicky map. https://github.com/ceskaexpedice/kramerius/blob/ea2a56b103f68f01d6649887816e17760b12d9b9/search-index/src/test/resources/xmlTests/geolocation.xml

Kde môžem nájsť triedy pre content modely, ktore Kramerius používa, z balika com.qbizm.kramerius.imp.jaxb, napr. com.qbizm.kramerius.imp.jaxb.monograph.Monograph? Sú to generované triedy z nejakých XSD?

Ano, je to z Monograph.xsd: https://github.com/ceskaexpedice/kramerius/blob/master/processes/import-jaxb-monograph/src/main/resources/Monograph.xsd

Build krameria hádže nasledovný error(súbor build.properties nemám nikde ovorený)

Nepodařilo se mi chybu replikovat. Napadá mě, jestli by to nemohlo být v jiné verzi gradle, zkusil bych ./gradlew.

bukovskyIQ commented 3 years ago

Odpovězeno, vyjasněno, zavírám.