Skip to content

Commit dc062af

Browse files
committed
Add tests and example
1 parent d7e5822 commit dc062af

4 files changed

Lines changed: 53 additions & 62 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Tests are also a good place to know how the the library works internally: [spec]
3333

3434
| Typesense Server | typesense-ruby |
3535
|------------------|----------------|
36-
| \>= v0.18.2 | \>= v0.11.0 |
36+
| \>= v0.19.0 | \>= v0.11.0 |
3737
| \>= v0.18.0 | \>= v0.10.0 |
3838
| \>= v0.17.0 | \>= v0.9.0 |
3939
| \>= v0.16.0 | \>= v0.8.0 |

examples/client_initialization.rb

Lines changed: 4 additions & 4 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.18.0 --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.19.0.rc16 --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.18.0 --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.19.0.rc16 --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.18.0 --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.19.0.rc16 --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.18.0 --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.19.0.rc16 --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

examples/search.rb

Lines changed: 22 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -73,37 +73,6 @@
7373
)
7474
ap results
7575

76-
# {
77-
# "facet_counts" => [],
78-
# "found" => 2,
79-
# "hits" => [
80-
# [0] {
81-
# "document" => {
82-
# "company_name" => "Stark Industries",
83-
# "country" => "USA",
84-
# "id" => "124",
85-
# "num_employees" => 5215
86-
# },
87-
# "highlight" => {
88-
# "company_name" => "<mark>Stark</mark> Industries"
89-
# }
90-
# },
91-
# [1] {
92-
# "document" => {
93-
# "company_name" => "Stark Corp",
94-
# "country" => "USA",
95-
# "id" => "127",
96-
# "num_employees" => 1031
97-
# },
98-
# "highlight" => {
99-
# "company_name" => "<mark>Stark</mark> Corp"
100-
# }
101-
# }
102-
# ],
103-
# "page" => 1,
104-
# "search_time_ms" => 0
105-
# }
106-
10776
##
10877
# Search for more documents
10978
results = @typesense.collections['companies'].documents.search(
@@ -114,25 +83,28 @@
11483
)
11584
ap results
11685

117-
# {
118-
# "facet_counts" => [],
119-
# "found" => 1,
120-
# "hits" => [
121-
# [0] {
122-
# "document" => {
123-
# "company_name" => "Doofenshmirtz Inc",
124-
# "country" => "Tri-State Area",
125-
# "id" => "126",
126-
# "num_employees" => 2
127-
# },
128-
# "highlight" => {
129-
# "company_name" => "Doofenshmirtz <mark>Inc</mark>"
130-
# }
131-
# }
132-
# ],
133-
# "page" => 1,
134-
# "search_time_ms" => 0
135-
# }
86+
##
87+
# Search for more multiple documents
88+
results = @typesense.multi_search.perform(
89+
{
90+
searches: [
91+
{
92+
'q' => 'Inc',
93+
'filter_by' => 'num_employees:<100',
94+
'sort_by' => 'num_employees:desc'
95+
},
96+
{
97+
'q' => 'Stark',
98+
}
99+
]
100+
},
101+
{
102+
# Parameters that are common to all searches, can be mentioned here
103+
'collection' => 'companies',
104+
'query_by' => 'company_name'
105+
}
106+
)
107+
ap results
136108

137109
##
138110
# Search for more documents
@@ -142,13 +114,6 @@
142114
)
143115
ap results
144116

145-
# {
146-
# "found" => 0,
147-
# "hits" => [],
148-
# "page" => 1,
149-
# "search_time_ms" => 0
150-
# }
151-
152117
##
153118
# Cleanup
154119
# Drop the collection
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../spec_helper'
4+
require_relative 'shared_configuration_context'
5+
6+
describe Typesense::MultiSearch do
7+
include_context 'with Typesense configuration'
8+
9+
describe '#perform' do
10+
it 'does a multi-search request' do
11+
stub_request(:post, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/multi_search', typesense.configuration.nodes[0]))
12+
.with(
13+
headers: {
14+
'Content-Type' => 'application/json',
15+
'X-Typesense-Api-Key' => typesense.configuration.api_key
16+
},
17+
query: hash_including({ param: 'a' }),
18+
body: JSON.dump({ searches: [] })
19+
).to_return(status: 200, body: '{}', headers: { 'Content-Type': 'application/json' })
20+
21+
result = typesense.multi_search.perform({ searches: [] }, { param: 'a' })
22+
23+
expect(result).to eq({})
24+
end
25+
end
26+
end

0 commit comments

Comments
 (0)