See the following for more information:

Search for Books

You can search for books in your eLibrary using the eLibrary Manager "Search" option to launch the Search dialog. This dialog allows you to enter a search expression to generate a list of books satisfying the search criteria. These same search expressions can be saved as Book Lists for searches that you run frequently (see Manage Book Lists for more information).

The easiest way to use the search feature, and the method that will most likely satisfy most of your searching needs, is to simply enter any terms of interest into the search dialog. This will result in a list of books appearing that are related to those terms. If you need finer control of search criteria, or you simply have an interest in understanding how eLibrary Manager search works, please read on.

Search expressions consist of one or more search terms, each of which results in a set of books than can be joined together as a union (using "or"), an intersection (using "and"), or an exclusion (using "not"). Each search term consists of the value you want to test against, optionally targeting a specific book information property.

As examples will likely be the most effective way to demonstrate how to specify search expressions, I'll present a number of those below. Following that, I'll specify a more precise definition of how expressions are structured, for those who want to compose more complex search expression.

Search Expression Examples

  1. Find books that refer to the name Verne. The simplest way to express this is with the following:

    Verne

    This style of expression does not target a specific book information property, so it will result in a list of books that references the search term value in any of a list of standard properties. By default, these properties are title, author and description. You can customize this set of properties to suit your needs through the eLibrary Manager settings.

  2. Find books that refer to the name Jules Verne. This example differs from the previous one in that the search term value contains a space character:

    "jules verne"

    Search term expressions that contain special characters need to be wrapped in quotation marks. The list of special characters is space, double quote ("), and colon (:). If the search term value contains a double quote character, then that character needs to be represented as \" to differentiate it from the enclosing quotes. Note that in this example, lower case characters are used for the search expression; search expression values are case insensitive.

  3. Find books that refer to the names Jules Verne and Wells. This can be accomplished with either of the following:

    "jules verne" wells
    "jules verne" and wells

    This results in a list of books that have references to both name values in any of the standard book information properties. Note that when two search terms have no joining component, then "and" is assumed.

  4. Find books that refer to either of the names Verne or Wells. This expression is:

    verne or wells

    This results in a list of books that have a reference to either of the name values in any of the standard book information properties.

  5. Find books referring to vampires but exclude those that also mention Carmilla. This can be accomplished with the following:

    vampires not carmilla

    This results in a list of books that have a reference to the word vampires, but excludes from that set books that also refer to Carmilla. If a search expression begins with a search term preceded by a "not" keyword, then the exclusion implicitly applies to the set of all books in the eLibrary.

  6. Find books that were published before the year 1900. The expression for this is:

    published:<1900

    This example demonstrates a search term that contains a property name qualifier and a comparison operator. A search term qualifier has a trailing colon character (:) and may be either the name of a book information property or the keyword "search" (the next example demonstrates this case). When qualified with a property name, the search term targets that property specifically. The comparison operator identifies the criteria for matching a book based on the search term value. In this example, the resulting list of books are those whose published date precedes the year 1900.

    For the list of property names and comparison operators, see Search Expression Format below.

  7. You've saved a Book List with a name I'm Reading that displays a list of books that you are currently reading (see Manage Book Lists for more information). To invoke this from the Search dialog, use the following expression:

    search:"I'm Reading"

    Search terms like in this example can be used in conjunction with other search terms to create more complex queries. Please note that, in contrast to regular search term values, the value portion of "search"-qualified terms are case-sensitive as they identify the saved named for a Book List.

  8. It is possible that certain books in your library do not have any author book information set. To find such books, perform a search with the following expression:

    author:false

    By specifying a book information property value of "true" or "false" with no comparison operator, the search will return books that have a value either set to anything (in the case of "true") or not set at all (in the case of "false").

    If a book information property is of type boolean, then there are some variation in search expressions that may lead to different results. Consider a boolean custom property called #read that you use to keep track of books that you have finished reading. To search for books that you have not yet read, you can use different search expressions, and, depending on how you manage book information, some options may be more appropriate than others. For example

    #read:false
    Return books whose #read property is not set.
    #read:=false
    Return books whose #read property is set to value "false".
    not #read:=true
    Return books whose #read property is either set to a value other than "true" or not set at all.

    In general, the last option is likely the one that is most reliable.

  9. Find books that are of type PDF. Book files of this type have a file extension of ".pdf". The expression for this is:

    filePath:<<.pdf

    This search expression find all books with a file path that ends with string ".pdf". Since search values are case insensitive, this expression will match books with upper-, lower- and mixed-case file extensions.

Search Expression Format

Search expressions conform to the following format (square brackets (i.e. []) represent optional components, horizontal bars (i.e. |) represent a choice, and ellipses (i.e. …) represent repeating components):

[not] <searchTerm> [[not|or|and] <searchTerm>]…

where <searchTerm> conforms to the following format:

[<propName>:][<op>]<value>

The search term joining components or, and and not specify that the sets of books resulting from the preceding and following search terms be combined as a union, intersection or exclusion, respectively. If a joining component does not appear between two search terms, then and is assumed. An expression starting with a not followed by a search term is assumed to be an exclusion from the set of all books.

The <value> Component

The <value> component specifies the data to compare against book information values when choosing books for a book list. If a search term value contains any special characters, then it must be wrapped in double quotation characters (i.e. "). Special characters include spaces, double quotes (i.e. ") and colons (i.e. :). Double quote characters contained by a search term value must be specified as \" (i.e. escaped) in order to differentiate them from the enclosing quotes. For example, a search term value of

Dial "M" for Murder

needs to be specified as

"Dial \"M\" for Murder"

If you compose search expression terms that are unqualified (i.e. no property name or comparison operator component), then you may need to wrap terms in double quotes if they can be interpreted as non-value components. For example, if you want to search for books referring to strings like and, or, not or =, then they need to be composed as "and", "or", "not" or "=", respectively, so that they are treated as values and not keywords.

If you specify a search term relating to a date type book information property (e.g. timestamp, lastOpened, published), then you should compose the value component as follows (you can specify the value to whatever precision you need):

<4-digit year>[-<2-digit month>[-<2-digit day>[T<2-digit hour>[:<2-digit minute>[:<2-digit second>[.<3-digit millisecond>[+|-<timezone>]]]]]]]

In most cases, you probably don't need to query with a precision any greater than a date. An example of this is:

2010-10-27

In case you do need to specify more precision, here is an example of a full datetime value (enclosed in quotes since the time portion contains special character ":"):

"2010-10-27T22:30:00.000-05:00"

Note: When a <value> component is specified as either "true" or "false" with no <op> component, then the search performs an existence check (See Example 8 above).

The <op> Component

The <op> component specifies the comparison operator to use when comparing a book information property value with a search term <value> to decide if a book is included in the resulting book set. Supported comparison operators are = (equals)
!= (not equals)
> (greater than)
>= (greater than or equals)
< (less than)
<= (less than or equals)
! (not)
>> (starts with)
<< (ends with)
!>> (does not start with)
!<< (does not end with)

The <op> component is optional. When not specified, the comparison operator is assumed to be "contains" for text properties, and = for numeric properties. A ! operator on its own specifies the inverse of the default comparison operator.

Since the >> and << operators (i.e. "starts with" and "ends with") only make sense for text properties, when used with numeric properties, the operator is treated as a > or < operator instead (i.e. "greater than" or "less than").

Note: When a <value> component is specified as either "true" or "false" with no <op> component, then the search performs an existence check (See Example 8 above).

The <propName> Component

The <propName> component always precedes a colon character (:). It can be specified as either the keyword search or as the name of a book information property. When the component is search, then the <value> component specifies the name of a saved Book List (see Manage Book Lists for more information). Book List names are case sensitive.

When the <propName> component specifies a book information property name, then the search comparison is applied against book information property values. The property names that you can use consist of standard ePub properties and both standard and custom calibre properties. In search expressions, you can use any of a number of synonyms for property names.

Supported properties include (where more than one value appears, you can use any interchangeably):

The <propName> component is optional. When not specified, the search comparison is applied to the Search Properties setting values (see eLibrary Manager Settings for more information). The default search properties are title, author and description.

Invoke Search
1. Invoke Search
Default Search
2. Default Search
Search Results
3. Search Results
Qualified Search
4. Compound Search
Search Results
5. Search Results
Property Search
6. Property Search
Search Results
7. Search Results