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.
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.
-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>
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)
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();
}
À 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