[Info-vax] Solr client on VMS
Arne Vajhøj
arne at vajhoej.dk
Wed Dec 25 13:43:42 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.
Java:
$ type Load.java
import java.io.IOException;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrInputDocument;
public class Load {
private static SolrInputDocument create(int id, String names,
String moves) {
SolrInputDocument res = new SolrInputDocument();
res.addField("id", id);
res.addField("names", names);
res.addField("moves", moves);
return res;
}
public static void main(String[] args) throws IOException,
SolrServerException {
HttpSolrClient 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();
}
}
$ javac -cp solrj/* Load.java
$ java -cp .:solrj/* 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.java
import java.io.IOException;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
public class Search {
private static void dump(HttpSolrClient client, String searchterm)
throws SolrServerException, IOException {
System.out.printf("search for : %s\n", searchterm);
SolrQuery query = new SolrQuery();
query.setParam("df", "alltext");
query.setQuery(searchterm);
query.addField("names");
query.addField("moves");
SolrDocumentList res = client.query("chessopening",
query).getResults();
for(SolrDocument doc : res) {
String names = (String)doc.getFirstValue("names");
String moves = (String)doc.getFirstValue("moves");
System.out.printf(" %s - %s\n", names, moves);
}
}
public static void main(String[] args) throws IOException,
SolrServerException {
HttpSolrClient 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();
}
}
$ javac -cp solrj/* Search.java
$ java -cp .:solrj/* 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