[JAVA] Starten Sie Apache Solr mit Embedded.

Hintergrund

Ich verwende Apache solr für die Arbeit, aber ich hatte gehofft, dass es leicht zu Hause (lokal) verschoben werden kann, aber ich habe kürzlich erfahren, dass es mit Embedded gestartet werden kann, also werde ich es mir notieren.

Was ist Apache Solr?

Eine von Apache bereitgestellte Volltextsuchmaschinenbibliothek. Es bietet eine umfangreiche Bibliothek auch in Open Source mit einem Verwaltungsbildschirm, Trefferhighlights, Facettensuche, Cache und Duplizierung.

Dinge vorzubereiten

-Solr.xml --solr allgemeine Einstellungen. Da es lokal ausgeführt werden sollte, habe ich "localhost" für den Host festgelegt.  https://lucene.apache.org/solr/guide/6_6/format-of-solr-xml.html -Solrj - Eine Bibliothek zum Ausgeben von Abfragen an sorr on java (siehe "pom.xml"). -Solr-Core - Eine Bibliothek für Solr-Core-Informationen (siehe "pom.xml"). -Kernordner - Ein Ordner, in dem die erstellten Kerndaten gespeichert werden (siehe "Hierarchie der Kernordner").

pom.xml

	<!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
	<dependency>
	    <groupId>org.apache.solr</groupId>
	    <artifactId>solr-solrj</artifactId>
	    <version>7.7.1</version>
	</dependency>

	<dependency>
	    <groupId>org.apache.solr</groupId>
	    <artifactId>solr-core</artifactId>
	    <version>7.7.1</version>
	</dependency>

Kernordnerhierarchie

Dieses Mal habe ich die folgenden Ordner unter src / main / resources erstellt. src/main/resources ┗ Solr-Ordner     ┣ solr.xml ┗ test_core Ordner ┗ core.properties (Der Inhalt kann leer sein)

Quelle

embeddedSolr.java



	private static CoreContainer container;
	private static SolrClient client;
	
	//Verzeichnis zum Speichern von Einstellungsinformationen
	private final static String solrFolder = "src/main/resources/solr";

	//Solr Start
	public static void init(String coreName) {

		//Einstellungsinformationen lesen
		container = new CoreContainer("src/main/resources/solr");
		container.load();

		try {
			//Geben Sie den Kern an und starten Sie ihn
			client = new EmbeddedSolrServer(container, coreName);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	//Daten hinzufügen
	public static void add() {

		//Liste zur Hinzufügung
		List<SolrInputDocument> docList = new ArrayList<>();

		SolrInputDocument doc = new SolrInputDocument();
		doc.setField("id", "1");
		doc.addField("content_txt_ja", "Taro kaufte Gemüse.");
		docList.add(doc);

		doc = new SolrInputDocument();
		doc.setField("id", "2");
		doc.addField("content_txt_ja", "Jiro verkaufte die Früchte.");
		docList.add(doc);

		doc = new SolrInputDocument();
		doc.setField("id", "3");
		doc.addField("content_txt_ja", "Saburo will Brot kaufen.");
		docList.add(doc);

		doc = new SolrInputDocument();
		doc.setField("id", "4");
		doc.addField("content_txt_ja", "Goro kauft nichts.");
		docList.add(doc);

		try {
			//Daten hinzufügen und festschreiben.
			client.add(docList);
			client.commit();
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}
	}

	//Datensuche
	public static void select(String keyword) {

		//Abfrageerstellung
		SolrQuery query = new SolrQuery();
		query.add("q", "content_txt_ja:\""+keyword+"\"");
		query.add("fl", "*,score");

		log.info("[Solr-Suche] Abfrage[{}]", query.toString());

		//Suche
		QueryResponse response = null;
		try {
			response = client.query(query);
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}

		//Suchergebnisse abrufen
		SolrDocumentList list = response.getResults();
		for(SolrDocument doc : list) {
			String id = doc.getFieldValue("id").toString();
			String text = doc.getFieldValue("content_txt_ja").toString();
			String score = doc.getFieldValue("score").toString();
			log.info("[Erfassungsergebnis] id[{}], text[{}] score[{}]", id, text, score);
		}
	}
	
	//Solr Stop
	public static void stop() {
		container.shutdown();
	}

Ausführungsergebnis

Als Ergebnis der Suche nach "Kaufen" wurden die folgenden Daten getroffen.

[Erfassungsergebnis] id[1], text[Taro kaufte Gemüse.] score[0.38845786](EmbettedSolrInit.java:111)
[Erfassungsergebnis] id[3], text[Saburo will Brot kaufen.] score[0.3472057](EmbettedSolrInit.java:111)
[Erfassungsergebnis] id[4], text[Goro kauft Süßigkeiten und geht nach Hause.] score[0.31387395](EmbettedSolrInit.java:111)

Es ist mir vorerst gelungen, es zu verschieben, daher möchte ich die Funktionen von Solr notieren, während ich es in Zukunft verschiebe.

Recommended Posts

Starten Sie Apache Solr mit Embedded.
[Linux] Starten Sie den Apache-Container mit Docker
Starten Sie k3s mit Docker-Compose
Wiederholte Probe mit Apache Freemarker
Greifen Sie mit Micronaut auf Apache Kafka zu
Erhalten Sie detaillierte Ergebnisse der morphologischen Analyse mit Apache Solr 7.6 + SolrJ
Bearbeiten Sie Excel mit Apache POI
Erhalten Sie detaillierte Ergebnisse der morphologischen Analyse mit Apache Solr 7.6 + SolrJ (Japanisch)
Leistungsschaltermuster mit Apache-Kamel
Versuchen Sie, recaptcha mit eingebettetem Jetty zu implementieren.
Laden Sie große Dateien mit Apache JMeter herunter
[SRE / Docker] Starten Sie die Steuerung mit Dockerize
Starten Sie Apache mit dem PHP-Apache-Image des Dockers neu
Java, Arrays für Anfänger
FileUpload mit Rest auf Apache Wicket
Container startet nicht mit Docker-Compose
So starten Sie Camunda mit Docker