Skip to content

Commit 2d3f50e

Browse files
committed
Examples for synonyms
1 parent e6ab9e8 commit 2d3f50e

2 files changed

Lines changed: 132 additions & 5 deletions

File tree

examples/client_initialization.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,21 @@
1212
## Setup
1313
#
1414
### Option 1: Start a single-node cluster
15-
# $ docker run -i -p 8108:8108 -v/tmp/typesense-server-data-1b/:/data -v`pwd`/typesense-server-peers:/typesense-server-peers typesense/typesense:0.12.1.rc1 --data-dir /data --api-key=xyz --listen-port 8108 --enable-cors
15+
# $ docker run -i -p 8108:8108 -v/tmp/typesense-server-data-1b/:/data -v`pwd`/typesense-server-peers:/typesense-server-peers typesense/typesense:0.18.0 --data-dir /data --api-key=xyz --listen-port 8108 --enable-cors
1616
#
1717
### Option 2: Start a 3-node cluster
1818
#
1919
# Create file in present working directory called typesense-server-peers (update IP Addresses appropriately to your local network):
2020
# $ echo '172.17.0.2:8107:8108,172.17.0.3:7107:7108,172.17.0.4:9107:9108' > `pwd`/typesense-server-peers
2121
#
2222
# Start node 1:
23-
# $ docker run -i -p 8108:8108 -p 8107:8107 -v/tmp/typesense-server-data-1b/:/data -v`pwd`/typesense-server-peers:/typesense-server-peers typesense/typesense:0.12.1.rc1 --data-dir /data --api-key=xyz --listen-port 8108 --peering-port 8107 --enable-cors --nodes=/typesense-server-peers
23+
# $ docker run -i -p 8108:8108 -p 8107:8107 -v/tmp/typesense-server-data-1b/:/data -v`pwd`/typesense-server-peers:/typesense-server-peers typesense/typesense:0.18.0 --data-dir /data --api-key=xyz --listen-port 8108 --peering-port 8107 --enable-cors --nodes=/typesense-server-peers
2424
#
2525
# Start node 2:
26-
# $ docker run -i -p 7108:7108 -p 7107:7107 -v/tmp/.typesense-server-data-2b/:/data -v`pwd`/typesense-server-peers:/typesense-server-peers typesense/typesense:0.12.1.rc1 --data-dir /data --api-key=xyz --listen-port 7108 --peering-port 7107 --enable-cors --nodes=/typesense-server-peers
26+
# $ docker run -i -p 7108:7108 -p 7107:7107 -v/tmp/.typesense-server-data-2b/:/data -v`pwd`/typesense-server-peers:/typesense-server-peers typesense/typesense:0.18.0 --data-dir /data --api-key=xyz --listen-port 7108 --peering-port 7107 --enable-cors --nodes=/typesense-server-peers
2727
#
2828
# Start node 3:
29-
# $ docker run -i -p 9108:9108 -p 9107:9107 -v/tmp/.typesense-server-data-3b/:/data -v`pwd`/typesense-server-peers:/typesense-server-peers typesense/typesense:0.12.1.rc1 --data-dir /data --api-key=xyz --listen-port 9108 --peering-port 9107 --enable-cors --nodes=/typesense-server-peers
29+
# $ docker run -i -p 9108:9108 -p 9107:9107 -v/tmp/.typesense-server-data-3b/:/data -v`pwd`/typesense-server-peers:/typesense-server-peers typesense/typesense:0.18.0 --data-dir /data --api-key=xyz --listen-port 9108 --peering-port 9107 --enable-cors --nodes=/typesense-server-peers
3030
#
3131
# Note: Be sure to add `--license-key=<>` at the end when starting a Typesense Premium server
3232

@@ -64,5 +64,5 @@
6464
retry_interval_seconds: 0.01,
6565
connection_timeout_seconds: 10,
6666
logger: Logger.new($stdout),
67-
log_level: Logger::DEBUG
67+
log_level: Logger::INFO
6868
)

examples/synonyms.rb

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# frozen_string_literal: true
2+
3+
##
4+
# These examples walk you through operations specifically related to synonyms
5+
6+
require_relative './client_initialization'
7+
8+
# Delete the collection if it already exists
9+
begin
10+
@typesense.collections['companies'].delete
11+
rescue Typesense::Error::ObjectNotFound
12+
end
13+
14+
##
15+
# Create a collection
16+
schema = {
17+
'name' => 'companies',
18+
'fields' => [
19+
{
20+
'name' => 'company_name',
21+
'type' => 'string'
22+
},
23+
{
24+
'name' => 'num_employees',
25+
'type' => 'int32'
26+
},
27+
{
28+
'name' => 'country',
29+
'type' => 'string',
30+
'facet' => true
31+
}
32+
],
33+
'default_sorting_field' => 'num_employees'
34+
}
35+
36+
@typesense.collections.create(schema)
37+
38+
# Let's create a couple documents for us to use in our search examples
39+
@typesense.collections['companies'].documents.create(
40+
'id' => '124',
41+
'company_name' => 'Stark Industries',
42+
'num_employees' => 5215,
43+
'country' => 'USA'
44+
)
45+
46+
@typesense.collections['companies'].documents.create(
47+
'id' => '127',
48+
'company_name' => 'Stark Corp',
49+
'num_employees' => 1031,
50+
'country' => 'USA'
51+
)
52+
53+
@typesense.collections['companies'].documents.create(
54+
'id' => '125',
55+
'company_name' => 'Acme Corp',
56+
'num_employees' => 1002,
57+
'country' => 'France'
58+
)
59+
60+
@typesense.collections['companies'].documents.create(
61+
'id' => '126',
62+
'company_name' => 'Doofenshmirtz Inc',
63+
'num_employees' => 2,
64+
'country' => 'Tri-State Area'
65+
)
66+
67+
##
68+
# Create synonyms
69+
70+
ap @typesense.collections['companies'].synonyms.upsert(
71+
'synonyms-doofenshmirtz',
72+
{
73+
'synonyms' => %w[Doofenshmirtz Heinz Evil]
74+
}
75+
)
76+
77+
##
78+
# Search for documents
79+
# Should return Doofenshmirtz Inc, since it's set as a synonym
80+
results = @typesense.collections['companies'].documents.search(
81+
'q' => 'Heinz',
82+
'query_by' => 'company_name'
83+
)
84+
ap results
85+
86+
##
87+
# List all synonyms
88+
ap @typesense.collections['companies'].synonyms.retrieve
89+
90+
##
91+
# Retrieve specific synonym
92+
ap @typesense.collections['companies'].synonyms['synonyms-doofenshmirtz'].retrieve
93+
94+
##
95+
# Update synonym to a one-way synonym
96+
ap @typesense.collections['companies'].synonyms.upsert(
97+
'synonyms-doofenshmirtz',
98+
{
99+
'root' => 'Evil',
100+
'synonyms' => %w[Doofenshmirtz Heinz]
101+
}
102+
)
103+
104+
##
105+
# Search for documents
106+
# Should return Doofenshmirtz Inc, since it's set as a synonym
107+
results = @typesense.collections['companies'].documents.search(
108+
'q' => 'Evil',
109+
'query_by' => 'company_name'
110+
)
111+
ap results
112+
113+
# Should not return any results, since this is a one-way synonym
114+
results = @typesense.collections['companies'].documents.search(
115+
'q' => 'Heinz',
116+
'query_by' => 'company_name'
117+
)
118+
ap results
119+
120+
##
121+
# Delete synonym
122+
ap @typesense.collections['companies'].synonyms['synonyms-doofenshmirtz'].delete
123+
124+
##
125+
# Cleanup
126+
# Drop the collection
127+
@typesense.collections['companies'].delete

0 commit comments

Comments
 (0)