Fulltext Search implements a Lucene-based simple query syntax
The following properties are searched with an accommodation:
- Name
- Name_Add
- ST Object Code
Query behavior
Any text with one or more terms is considered a valid starting point for query execution. OpenBooking Fulltext will match accommodations containing any or all of the terms in Name and City, including any variations found during analysis of the text.
Operators in simple search
You can embed operators in a query string to build a riche set of criteria against which matching documents are found.
AND operator +
The AND operator is a plus sign. For example, hotel+luxury
will search for accommodations containing both hotel
and luxury
.
OR operator |
The OR operator is a vertical bar or pipe character. For example, hotel | luxury
will search for documents containing either hotel
or luxury
or both.
NOT operator -
The NOT operator is a minus sign. For example, hotel
–luxury
will search for accommodations that have the hotel
term and/or do not have luxury
.
Suffix operator *
The suffix operator is an asterisk. For example, lux*
will search for accommodations that have a term that starts with lux
, ignoring case.
Phrase search operator " "
The phrase operator encloses a phrase in quotation marks. For example, while City Motel
(without quotes) would search for documents containing City
and/or Motel
anywhere in any order, "City Motel"
(with quotes) will only match documents that contain that whole phrase together and in that order (text analysis still applies).
Precedence operator ( )
The precedence operator encloses the string in parentheses. For example, motel+(engelberg | luxury)
will search for documents containing the motel term and either engelberg
or luxury
(or both).|
Escaping search operators
In order to use the above symbols as actual part of the search text, they should be escaped by prefixing them with a backslash. For example, luxury\\+hotel
will result in the term luxury+hotel
. In order to make things simple for the more typical cases, there are two exceptions to this rule where escaping is not needed:
- The NOT operator
-
only needs to be escaped if it's the first character after whitespace, not if it's in the middle of a term. For example,wi-fi
is a single term - The suffix operator
*
needs to be escaped only if it's the last character before whitespace, not if it's in the middle of a term. For example,wi*fi
is treated as a single token.