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.
Eine von Apache bereitgestellte Volltextsuchmaschinenbibliothek. Es bietet eine umfangreiche Bibliothek auch in Open Source mit einem Verwaltungsbildschirm, Trefferhighlights, Facettensuche, Cache und Duplizierung.
-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>
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)
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();
}
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