[JAVA] Démarrez Apache Solr avec Embedded.

Contexte

J'utilise Apache solr pour le travail, mais j'espérais qu'il pourrait être facilement déplacé chez moi (localement), mais j'ai récemment appris qu'il peut être lancé avec Embedded, donc je vais en prendre note.

Qu'est-ce qu'Apache Solr?

Une bibliothèque de moteur de recherche en texte intégral fournie par Apache. Il propose une bibliothèque riche même en open source avec un écran de gestion, des points forts, une recherche par facette, un cache et une duplication.

Choses à préparer

-Solr.xml - paramètres généraux de Solr. Comme il était censé fonctionner localement, j'ai défini "localhost" pour l'hôte.  https://lucene.apache.org/solr/guide/6_6/format-of-solr-xml.html -Solrj --Une bibliothèque pour émettre des requêtes à sorr sur java (voir "pom.xml"). -Solr-core --Une bibliothèque d'informations sur solr core (voir "pom.xml"). -Core folder-Un dossier qui stocke les données de base créées (voir "Hiérarchie des dossiers Core").

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>

Hiérarchie des dossiers principaux

Cette fois, j'ai créé les dossiers suivants sous src / main / resources. src/main/resources ┗ dossier solr     ┣ solr.xml ┗ dossier test_core ┗ core.properties (Le contenu peut être vide)

La source

embeddedSolr.java



	private static CoreContainer container;
	private static SolrClient client;
	
	//Répertoire pour stocker les informations de configuration
	private final static String solrFolder = "src/main/resources/solr";

	//solr start
	public static void init(String coreName) {

		//Lire les informations de réglage
		container = new CoreContainer("src/main/resources/solr");
		container.load();

		try {
			//Spécifiez le noyau et lancez
			client = new EmbeddedSolrServer(container, coreName);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	//Ajouter des données
	public static void add() {

		//Liste à ajouter
		List<SolrInputDocument> docList = new ArrayList<>();

		SolrInputDocument doc = new SolrInputDocument();
		doc.setField("id", "1");
		doc.addField("content_txt_ja", "Taro a acheté des légumes.");
		docList.add(doc);

		doc = new SolrInputDocument();
		doc.setField("id", "2");
		doc.addField("content_txt_ja", "Jiro a vendu le fruit.");
		docList.add(doc);

		doc = new SolrInputDocument();
		doc.setField("id", "3");
		doc.addField("content_txt_ja", "Saburo envisage d'acheter du pain.");
		docList.add(doc);

		doc = new SolrInputDocument();
		doc.setField("id", "4");
		doc.addField("content_txt_ja", "Goro n'achète rien.");
		docList.add(doc);

		try {
			//Ajoutez et validez des données.
			client.add(docList);
			client.commit();
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		}
	}

	//recherche de données
	public static void select(String keyword) {

		//Création de requêtes
		SolrQuery query = new SolrQuery();
		query.add("q", "content_txt_ja:\""+keyword+"\"");
		query.add("fl", "*,score");

		log.info("Requête [Solr search][{}]", query.toString());

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

		//Obtenir les résultats de la recherche
		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("[Résultat de l'acquisition] id[{}], text[{}] score[{}]", id, text, score);
		}
	}
	
	//arrêt solr
	public static void stop() {
		container.shutdown();
	}

Résultat d'exécution

À la suite de la recherche de «acheter», les données suivantes ont été atteintes.

[Résultat de l'acquisition] id[1], text[Taro a acheté des légumes.] score[0.38845786](EmbettedSolrInit.java:111)
[Résultat de l'acquisition] id[3], text[Saburo envisage d'acheter du pain.] score[0.3472057](EmbettedSolrInit.java:111)
[Résultat de l'acquisition] id[4], text[Goro achète des bonbons et rentre chez lui.] score[0.31387395](EmbettedSolrInit.java:111)

J'ai réussi à le déplacer pour le moment, je voudrais donc prendre note des fonctions de Solr tout en le déplaçant dans le futur.

Recommended Posts

Démarrez Apache Solr avec Embedded.
[Linux] Démarrer le conteneur Apache avec Docker
Démarrez k3s avec docker-compose
Échantillon répété avec Apache Freemarker
Sortie CSV par Apache Commons CSV
Accédez à Apache Kafka avec Micronaut
Obtenez des résultats détaillés de l'analyse morphologique avec Apache Solr 7.6 + SolrJ
Manipuler Excel avec Apache POI
Obtenez des résultats détaillés de l'analyse morphologique avec Apache Solr 7.6 + SolrJ (japonais)
Modèle de disjoncteur avec Apache Camel
Essayez d'implémenter recaptcha avec Jetty intégré.
Téléchargez des fichiers volumineux avec Apache JMeter
[SRE / Docker] Démarrer le contrôle avec Dockerize
Redémarrez Apache avec l'image php-apache de Docker
Java, des tableaux pour débuter avec les débutants
FileUpload avec Rest sur Apache Wicket
Le conteneur ne commence pas par docker-compose
Comment démarrer Camunda avec Docker