FullText Search on a remote database

Hi dear Forum

I am new to JabRef and enjoying very much so far. But I encounterd a problem.

System

  • JabRef 5.9–2023-01-08–76253f1a7
  • Windows 10 10.0 amd64
  • Java 19.0.1
  • JavaFX 19+11

Setup

  • remote database used by around 5 peopls
  • MYSQL
  • the files are all stored in a single folder on a NAS
  • as of now there are approximately 250 pdf articles in this folder and in the JabRef Databse

Question

I have a question regarding the fulltext search. I decided to use JabRef as it seemed to offer a really good fulltext search and it also seemed to work. At one point it felt like the fulltext search is not working anymore at all. Now I have some questions regarding my use cases.

  • are the indexes locally, because a co-worker seems to have a working fulltext search by accessing the same database as I do. On his machine the fulltext search seems to work properly
  • is there any way to test the full text search apart from trial and error?

If any questions remain. Please let me know:

Best, Sebastian

Have you actually “enabled” the full-text search?

Hi thanks for the help,

Yes I enabeld this function and I also enabled this
image
in the preferences

I think indexes are stored locally, but I don’t know where. Everytime users upgrade to a new version of JabRef, a new full-text index is created. This is, because usually in between JabRef versions, the search backend is upgraded to a newer version and these indexes are not backwards compatible.

Hmm. Tough issue.
Maybe you could compare your settings with your colleagues settings under options / file > preferences > linked files and also under library > library properties > override default file directories

Hi ThilotE

Thanks for your suggestions. I will test this out asap but it will not be before Wendesday next week. I will come back to this feed and report.

For any other tips I am still open.

Thanks and best,
Sebastian

HI, you can also try Tools → Rebuild search index

Hi Christoph

Thank you for your suggestion. I did not know this option as of now. I tried this and it takes approximately 2seconds which seems to fast to me, also it did not help, even after a restart of JabRef

Best, Sebastian

Hi there

I tried rebuilding the index again today on the following build:

JabRef 5.9–2023-01-08–76253f1a7
Windows 10 10.0 amd64
Java 19.0.1
JavaFX 19+11

and get the following error:

java.lang.IllegalStateException: Task must only be used from the FX Application Thread
	at org.jabref.merged.module@5.9.6000/javafx.concurrent.Task.checkThread(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.concurrent.Task.isRunning(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
	at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
	at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
	at java.base/java.util.stream.DoublePipeline.collect(Unknown Source)
	at java.base/java.util.stream.DoublePipeline.average(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.gui.StateManager.lambda$new$4(Unknown Source)
	at com.tobiasdiez.easybind@2.2.1-SNAPSHOT/com.tobiasdiez.easybind.EasyBind$9.computeValue(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.binding.ObjectBinding.get(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.binding.ObjectExpression.getValue(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.property.DoublePropertyBase$2.computeValue(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.binding.DoubleBinding.get(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.property.DoublePropertyBase.get(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.scene.control.ProgressIndicator.getProgress(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.scene.control.ProgressIndicator$2.invalidated(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.property.DoublePropertyBase.markInvalid(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.property.DoublePropertyBase$Listener.invalidated(Unknown Source)
	at org.jabref.merged.module@5.9.6000/com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(Unknown Source)
	at org.jabref.merged.module@5.9.6000/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.binding.DoubleBinding.invalidate(Unknown Source)
	at org.jabref.merged.module@5.9.6000/com.sun.javafx.binding.BindingHelperObserver.invalidated(Unknown Source)
	at org.jabref.merged.module@5.9.6000/com.sun.javafx.binding.ExpressionHelper$SingleInvalidation.fireValueChangedEvent(Unknown Source)
	at org.jabref.merged.module@5.9.6000/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.beans.binding.ObjectBinding.invalidate(Unknown Source)
	at org.jabref.merged.module@5.9.6000/com.sun.javafx.binding.BindingHelperObserver.invalidated(Unknown Source)
	at org.jabref.merged.module@5.9.6000/com.sun.javafx.collections.ListListenerHelper$Generic.fireValueChangedEvent(Unknown Source)
	at org.jabref.merged.module@5.9.6000/com.sun.javafx.collections.ListListenerHelper.fireValueChangedEvent(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.collections.ObservableListBase.fireChange(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.collections.ListChangeBuilder.commit(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.collections.ListChangeBuilder.endChange(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.collections.ObservableListBase.endChange(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.collections.ModifiableObservableListBase.add(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.gui.StateManager.addBackgroundTask(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.gui.util.DefaultTaskExecutor.execute(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.gui.util.BackgroundTask.executeWith(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.logic.pdf.search.indexing.IndexingTaskManager.enqueueTask(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.logic.pdf.search.indexing.IndexingTaskManager.createIndex(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.gui.search.RebuildFulltextSearchIndexAction.rebuildIndex(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.gui.util.BackgroundTask$2.call(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.gui.util.BackgroundTask$2.call(Unknown Source)
	at org.jabref@5.9.6000/org.jabref.gui.util.DefaultTaskExecutor$1.call(Unknown Source)
	at org.jabref.merged.module@5.9.6000/javafx.concurrent.Task$TaskCallable.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

Does anyone have an idea what this could cause?

It still does not run of course and I crosschecked with the application DocFetcher. It delivers fully different results but results which are to be expected. When I look at the results from JabRef it feels like, even though I have FullText Search ennabled it only searched the abstracts from the entries but not the .pdf itself.

Thank you and best, Sebastian

Hm, this is odd.
Can you please test the 5.10 version from downloads.jabref.org ?
As we updated lucene I think this should already trigger a reindex

Hi @Siedlerchr

Thank you for your suggestion. I will try this asap and update the forum.

Best, Sebastian