[Info-vax] Solr client on VMS
Arne Vajhøj
arne at vajhoej.dk
Wed Dec 25 13:42:26 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.
Groovy:
$ groovy_cp = "solrj/solr-solrj-8.11.4.jar"
$ type Load.groovy
import org.apache.solr.client.solrj.*
import org.apache.solr.client.solrj.impl.*
import org.apache.solr.common.*
def create(id, names, moves) {
res = new SolrInputDocument()
res.addField("id", id)
res.addField("names", names)
res.addField("moves", moves)
return res
}
client = new HttpSolrClient.Builder("http://arnepc5:8888/solr").build()
client.deleteByQuery("chessopening", "*:*")
client.add("chessopening", create(1, "Spanish defense, Ruy Lopez", "1.
e4, e5, 2. Nf3, Nc6, 3. Bb5,"))
client.add("chessopening", create(2, "French defense", "1. e4, e6, 2.
d4, d5,"))
client.add("chessopening", create(3, "Sicilian defense", "1. e4, c5,"))
client.add("chessopening", create(4, "Queens gambit", "1. d4, d5, 2. c4,"))
client.add("chessopening", create(5, "Dutch defense", "1. d4, f5,"))
client.add("chessopening", create(6, "Reti opening", "1. Nf3, d5, 2. c4,"))
client.commit("chessopening")
client.close()
$ groovyc """Load.groovy"""
$ java -cp .:solrj/*:/disk0/net/groovy/groovy-4.0.12/lib/* Load
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for
further details.
$ type Search.groovy
import org.apache.solr.client.solrj.*
import org.apache.solr.client.solrj.impl.*
import org.apache.solr.common.*
def dump(client, searchterm) {
printf("search for : %s\n", searchterm)
query = new SolrQuery()
query.setParam("df", "alltext")
query.setQuery(searchterm)
query.addField("names")
query.addField("moves")
res = client.query("chessopening", query).getResults()
for(doc in res) {
names = doc.getFirstValue("names")
moves = doc.getFirstValue("moves")
printf(" %s - %s\n", names, moves)
}
}
client = new HttpSolrClient.Builder("http://arnepc5:8888/solr").build()
// 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*")
client.close()
$ groovyc """Search.groovy"""
$ java -cp .:solrj/*:/disk0/net/groovy/groovy-4.0.12/lib/* Search
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for
further details.
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