2016-10-12 2 views
2

bekam ich meine SOLR zu arbeiten, und es funktioniert anständig, aber ich habe keine Ahnung, was genau verwaltete-Schema ist, da ich die Standard-Version verwendet habe, in denen ich einige Zeilen hinzugefügt, die ich für meinen FallSOLR Managed-Schema, wie man es benutzt?

benötigen
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="name" type="text_general" indexed="true" stored="true" default="" /> 
<field name="brand_id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="brand_name" type="text_general" indexed="true" stored="true" default="" /> 
<field name="type" type="string" indexed="true" stored="true" required="true" default="0" /> 

ich kann nicht die vollständige Datei enthalten, da wie 700 Zeilen ist ... aber voll xml ist hier http://pastebin.com/Z9nc36QD

tun i alles als Standard-Beispiel zu halten haben? Ich habe keine Ahnung ... Haben Sie ein Beispiel für eine typische Schemadatei?

Antwort

3

Das verwaltete Schema soll durch die Schema API manipuliert werden und nicht durch Bearbeiten der vorhandenen Dateien (die eine Warnung dazu enthalten). Die Datei schema.xml wird beim ersten Start nur einmal gelesen, um das ursprüngliche Schema zu erstellen. Alle Änderungen danach müssen über die Schema-API vorgenommen werden. Wenn Sie eine schema.xml-Datei wie die älteren Solr-Versionen ohne Schema-API-Unterstützung verwenden möchten, können Sie ClassicIndexSchemaFactory in Ihrer Datei solrconfig.xml verwenden. Siehe die Schema Factory Definition:

<schemaFactory class="ClassicIndexSchemaFactory"/> 

Eine Alternative eines verwalteten Schema zu verwenden ist, um explizit eine ClassicIndexSchemaFactory zu konfigurieren. ClassicIndexSchemaFactory erfordert die Verwendung einer schema.xml-Konfigurationsdatei und lässt zur Laufzeit keine programmatischen Änderungen am Schema zu. Die Datei schema.xml muss manuell bearbeitet werden und wird nur geladen, wenn die Sammlung geladen wird.

Sie müssen nur die Teile des Schemas zu halten, die Sie tatsächlich nutzen, und das Beispiel-Schema (je nachdem, welche schema ein Benutzer mit beginnt) viele, haben viele Felder und Feldtypen in der Regel, die Sie nicht tun brauchen. Diese können entfernt werden, bis sie benötigt werden, und die Feldtypen können optimiert werden, um die gewünschten Funktionen zu aktivieren.

Beachten Sie jedoch, dass eine Änderung des Schemas eine Neuindizierung des Inhalts erfordert, damit die Änderungen bei der Suche sichtbar sind.

Genaues Schemadesign ist etwas, mit dem Sie arbeiten und experimentieren müssen, damit Sie das Abfrageprofil und die Funktionen für die Übereinstimmung erhalten, die Sie benötigen.

0

Sie sollten Solrs Schema-API verwenden. Weitere Informationen finden Sie hier: https://lucene.apache.org/solr/guide/7_2/schema-api.html

Es bedeutet im Grunde, dass Sie curl -X POST (an localhost) von einer Shell ausstellen, um die Datei zu bearbeiten.

Beispiel:

:curl -X POST -H 'Content-type:application/json' --data-binary '{ 
"add-field-type" : { 
"name":"myNewTxtField", 
"class":"solr.TextField", 
"positionIncrementGap":"100", 
"analyzer" : { 
    "charFilters":[{ 
     "class":"solr.PatternReplaceCharFilterFactory", 
     "replacement":"$1$1", 
     "pattern":"([a-zA-Z])\\\\1+" }], 
    "tokenizer":{ 
     "class":"solr.WhitespaceTokenizerFactory" }, 
    "filters":[{ 
     "class":"solr.WordDelimiterFilterFactory", 
     "preserveOriginal":"0" }]}} 
}' http://localhost:8983/solr/gettingstarted/schema` 

Persönlicher Kommentar

Es ist 2018, es sollte wirklich nur ein Web-Interface aus ihrer bestehenden Admin-Konsole sein, diese localhost Befehle zu erstellen und ausgeben. Ich bekomme, dass Dinge schwierig werden können, wenn es einen Tierpfleger gibt, aber grundlegende Exploration auf einem einzigen Server sollte trivial sein und ist es derzeit nicht. Dieser Ansatz würde den formatierten Befehl curl anzeigen, damit neue Entwickler auf die richtige Verwendung vorbereitet werden.

Entwickler müssen das XML aus der Dokumentation wie folgt in den richtigen JSON für den POST übersetzen.

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" 
     words="stopwords.txt" /> 
    <!-- in this example, we will only use synonyms at query time 
    <filter class="solr.SynonymFilterFactory" 
     synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
    --> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" 
     ignoreCase="true" words="stopwords.txt" /> 
    <filter class="solr.SynonymFilterFactory" 
     synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType>