Search within a library

This page collects requirements on the search within a library. Typically, a user uses the search bar to trigger a search in the current library. They can also open up a popup to search across all libraries.

Requirements on search regarding a fetcher are not covered here. Requirements on the syntax itself are not covered here, oo.

Requirements sources

Indirectly, the requirements are listed at https://docs.jabref.org/finding-sorting-and-cleaning-entries/search. This page tries to collect issues from users as requirements to enable better tracing in the code.

Search syntax must support quick search by first author name

req~jabgui.search.syntax.author-first-name~1

Issue: #10490

Enable to quickly search by first author name.

Example BibTeX entry:

@article{art_1,
  author = {John Demo}
}

@article{art_2,
  author = {John Demoing}
}

When searching for “author” “Demo” should match art_1 only.

It is possible by regular expressions, but the user asked for “quickly”.

Currently, no implementation is linked

Search syntax must support quick search by citation key

req~jabgui.search.syntax.citation-key~1

Issue: #10490

Enable to quickly search for a citation key.

Currently, no implementation is linked

Full-text search must search linked files without Postgres backend

req~jabgui.search.fulltext.lucene-without-postgres~1

When linked-file full-text indexing is enabled, users must be able to search the contents of linked files without enabling the experimental Postgres search backend.

Needs: impl, utest

Full-text search results must reflect the active library in the entry editor

req~jabgui.search.fulltext.entry-editor-results~1

After a linked-file search completes, the selected entry’s matching file text and page links appear in the entry editor for the active library. Switching libraries must not show results from the previous library. PR #17367

Needs: impl, utest

Full-text search must apply case-sensitive operators to linked files

req~jabgui.search.fulltext.case-sensitive~1

Issue: #13048

The case-sensitive operators of the search syntax (=!, ==!, =~!) must also apply to the contents and annotations of linked files. Searching for any ==! SEE must not match a file that only contains See.

Needs: impl, utest

Full-text search must preserve metadata results when Lucene query fails

req~jabgui.search.fulltext.lenient-query-parsing~1

Issue: #9482

The search bar validates regular expressions with java.util.regex, the full-text index parses them with Lucene’s own dialect, where characters such as " and < are syntax instead of literals. A query that only Lucene rejects must leave the metadata results untouched and skip the linked files, instead of aborting the whole search.

Needs: impl, utest