[Info-vax] Solr client on VMS
Arne Vajhøj
arne at vajhoej.dk
Wed Dec 25 13:39:08 EST 2024
On 12/6/2024 7:49 PM, Arne Vajhøj wrote:
> I have been looking a bit at Solr recently. For those that don't
> know Solr, then it is a text search engine - or more accurate it
> is a web frontend for the Lucene text search engine. Both
> Solr and Lucene are Apache projects (open source).
>
> Solr is basically exposing a web API, so anything that can do
> HTTP POST can use Solr. But clients encapsulating the HTTP
> stuff does exist for many languages. On VMS then both JVM languages
> and Python should be able to use a standard client.
Python:
$ type load.py
import solr
client = solr.SolrConnection('http://arnepc5:8888/solr/chessopening')
client.delete_query('*:*')
client.add(id=1, names='Spanish defense, Ruy Lopez', moves='1. e4, e5,
2. Nf3, Nc6, 3. Bb5,')
client.add(id=2, names='French defense', moves='1. e4, e6, 2. d4, d5,')
client.add(id=3, names='Sicilian defense', moves='1. e4, c5,')
client.add(id=4, names='Queens gambit', moves='1. d4, d5, 2. c4,')
client.add(id=5, names='Dutch defense', moves='1. d4, f5,')
client.add(id=6, names='Reti opening', moves='1. Nf3, d5, 2. c4,')
client.commit()
$ python load.py
<add><doc><field name="id">1</field><field name="names">Spanish defense,
Ruy Lopez</field><field name="moves">1. e4, e5, 2. Nf3, Nc6
, 3. Bb5,</field></doc></add>
<add><doc><field name="id">2</field><field name="names">French
defense</field><field name="moves">1. e4, e6, 2. d4, d5,</field></doc
></add>
<add><doc><field name="id">3</field><field name="names">Sicilian
defense</field><field name="moves">1. e4, c5,</field></doc></add>
<add><doc><field name="id">4</field><field name="names">Queens
gambit</field><field name="moves">1. d4, d5, 2. c4,</field></doc></ad
d>
<add><doc><field name="id">5</field><field name="names">Dutch
defense</field><field name="moves">1. d4, f5,</field></doc></add>
<add><doc><field name="id">6</field><field name="names">Reti
opening</field><field name="moves">1. Nf3, d5, 2. c4,</field></doc></ad
d>
$ type search.py
import solr
def dump(client, searchterm):
print('search for : %s' % (searchterm))
res = client.query(searchterm, df='alltext').results
for doc in res:
print(' %s - %s' % (doc['names'], doc['moves']))
client = solr.SolrConnection('http://arnepc5:8888/solr/chessopening')
# all
dump(client, '*:*')
# one
dump(client, 'names:defense')
dump(client, 'moves:d4')
# dual
dump(client, 'alltext:defense')
dump(client, 'alltext:d4')
dump(client, 'defense') # default field
dump(client, 'd4') # default field
# boolean
dump(client, 'names:defense moves:d4') # implicit or
dump(client, 'names:defense AND moves:d4') # and
dump(client, 'names:defense NOT moves:d4') # not
dump(client, 'defense d4') # default field + implicit or
dump(client, 'defense AND d4') # default field + and
dump(client, 'defense NOT d4') # default field + not
# wildcard
dump(client, 'names:def*')
dump(client, 'moves:N*')
$ python search.py
search for : *:*
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
French defense - 1. e4, e6, 2. d4, d5,
Sicilian defense - 1. e4, c5,
Queens gambit - 1. d4, d5, 2. c4,
Dutch defense - 1. d4, f5,
Reti opening - 1. Nf3, d5, 2. c4,
search for : names:defense
French defense - 1. e4, e6, 2. d4, d5,
Sicilian defense - 1. e4, c5,
Dutch defense - 1. d4, f5,
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
search for : moves:d4
Dutch defense - 1. d4, f5,
Queens gambit - 1. d4, d5, 2. c4,
French defense - 1. e4, e6, 2. d4, d5,
search for : alltext:defense
Sicilian defense - 1. e4, c5,
Dutch defense - 1. d4, f5,
French defense - 1. e4, e6, 2. d4, d5,
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
search for : alltext:d4
Dutch defense - 1. d4, f5,
Queens gambit - 1. d4, d5, 2. c4,
French defense - 1. e4, e6, 2. d4, d5,
search for : defense
Sicilian defense - 1. e4, c5,
Dutch defense - 1. d4, f5,
French defense - 1. e4, e6, 2. d4, d5,
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
search for : d4
Dutch defense - 1. d4, f5,
Queens gambit - 1. d4, d5, 2. c4,
French defense - 1. e4, e6, 2. d4, d5,
search for : names:defense moves:d4
Dutch defense - 1. d4, f5,
French defense - 1. e4, e6, 2. d4, d5,
Queens gambit - 1. d4, d5, 2. c4,
Sicilian defense - 1. e4, c5,
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
search for : names:defense AND moves:d4
Dutch defense - 1. d4, f5,
French defense - 1. e4, e6, 2. d4, d5,
search for : names:defense NOT moves:d4
Sicilian defense - 1. e4, c5,
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
search for : defense d4
Dutch defense - 1. d4, f5,
French defense - 1. e4, e6, 2. d4, d5,
Queens gambit - 1. d4, d5, 2. c4,
Sicilian defense - 1. e4, c5,
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
search for : defense AND d4
Dutch defense - 1. d4, f5,
French defense - 1. e4, e6, 2. d4, d5,
search for : defense NOT d4
Sicilian defense - 1. e4, c5,
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
search for : names:def*
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
French defense - 1. e4, e6, 2. d4, d5,
Sicilian defense - 1. e4, c5,
Dutch defense - 1. d4, f5,
search for : moves:N*
Spanish defense, Ruy Lopez - 1. e4, e5, 2. Nf3, Nc6, 3. Bb5,
Reti opening - 1. Nf3, d5, 2. c4,
Arne
More information about the Info-vax
mailing list