This is a document for PGroonga 2.X and 3.X. See PGroonga 1.x document when you're using old PGroonga.
%%
operatorThis operator is deprecated since 1.2.0. Use &@
operator instead.
%%
operator performs full text search by one keyword.
column %% keyword
column
is a column to be searched. It's text
type, text[]
type or varchar
type.
keyword
is a keyword for full text search. It's text
type for text
type or text[]
type column
. It's varchar
type for varchar
type column
.
You need to specify one of the following operator classes to use this operator:
pgroonga_text_full_text_search_ops_v2
: Default for text
pgroonga_text_array_full_text_search_ops_v2
: Default for text[]
pgroonga_varchar_full_text_search_ops_v2
: For varchar
pgroonga_text_full_text_search_ops
: For text
pgroonga_text_array_full_text_search_ops
: For text[]
pgroonga_varchar_full_text_search_ops
: For varchar
Here are sample schema and data for examples:
CREATE TABLE memos (
id integer,
content text
);
CREATE INDEX pgroonga_content_index ON memos USING pgroonga (content);
INSERT INTO memos VALUES (1, 'PostgreSQL is a relational database management system.');
INSERT INTO memos VALUES (2, 'Groonga is a fast full text search engine that supports all languages.');
INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga as index.');
INSERT INTO memos VALUES (4, 'There is groonga command.');
You can perform full text search with one keyword by %%
operator:
SELECT * FROM memos WHERE content %% 'engine';
-- id | content
-- ----+------------------------------------------------------------------------
-- 2 | Groonga is a fast full text search engine that supports all languages.
-- (1 row)
If you want to perform full text search with multiple keywords or AND/OR search, use &@~
operator.
If you want to perform full text search with multiple keywords OR search, use &@|
operator.
&@~
operator: Full text search by easy to use query language
&@|
operator: Full text search by an array of keywords