[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