2016-05-03 17 views
0

Ich habe ein paar neue dynamische Felder in solr-6.0.0/server/Solr/configsets/data_driven_schema_configs/conf/Managed-Schema wie folgt:kann nicht hinzugefügt neue dynamische Felder in Solr 6.0

<dynamicField name="*_sst" type="string" indexed="false" stored="true" /> 
    <dynamicField name="*_sin" type="string" indexed="true" stored="false" /> 

Dann ich beginne solr und fügen Sie eine Sammlung wie:

bin/solr start -cloud 
bin/solr create -c my_coll -shards 2 -replicationFactor 1 

sehe ich die dynamischen Felder auf dem Pflücken, wenn ich nach http://localhost:8983/solr/#/my_coll/files?file=managed-schema

<dynamicField name="*_sst" type="string" indexed="false" stored="true"/> 
<dynamicField name="*_sin" type="string" indexed="true" stored="false"/> 
navigieren

Wenn ich jedoch Dokumente an diese Sammlung senden und abfragen, kann ich durch * _sst Felder (die nur gespeichert werden sollten) abfragen und ich sehe * _sin Felder im Ergebnis (die waren soll nur indexiert werden).

Wenn ich die http://localhost:8983/solr/#/my_coll/schema?field=FooPrefix.name2_sst sehe, zeigt es, dass mein _sst Feld korrekt zugeordnet ist, aber ich kann immer noch darauf suchen? screen-shot of Solr showing mapping of actual field to dynamic field

Weiß jemand, was hier nicht korrekt ist?

Antwort

0

Ich denke, das ist wegen der Datei managed-schema.xml hat viele viele dynamicFields bereits definiert.

Und Sie Feld muss eines davon verwenden.

Ich denke, Ihr Feld die

<dynamicField name="*_ss" type="strings" indexed="true" stored="true"/> 

oder es könnte sein, wird mit anderen dynamischen Feld verwendet werden

<dynamicField name="*_t" type="text_general" indexed="true" stored="true"/> 

oder könnte.

Ich würde vorschlagen, dass Sie entweder den Rest alle dynamicField löschen, die nicht erforderlich sind, und behalten Sie die, die von Ihnen hinzugefügt werden.

Sobald Sie damit fertig sind, starten Sie den Server neu und indizieren Sie die Daten neu und überprüfen Sie.

+0

Das ursprüngliche verwaltete Schema hat "* _ss" nach "* _s" definiert.Wenn das, was Sie gesagt haben, wahr ist, dann hätten "* _ss" (oder irgendwelche anderen Felder "* _is", "* _fs" usw.) niemals eine Übereinstimmung gefunden, da vor dieser Übereinstimmung ihre kleineren Ausdrücke mit regulärem Ausdruck übereinstimmen würden "* _i" hätte vor "* _is" und so weiter gepasst). Aber das könnte ein seltsamer Fehler in Solr sein und ich werde versuchen zu sehen, ob dein Vorschlag dieses Problem löst. Wird meine Testergebnisse veröffentlichen. – user2250246

+0

Ich habe Ihren Vorschlag versucht, aber es hat nicht funktioniert :( – user2250246

0

Die Antwort ist in Ihrem Screenshot. Alles dreht sich um docValues ​​. Ihre Attribute werden zwischen der Feld- und der Typdefinition gesammelt. Und die Definition für den Typ Zeichenfolge enthält jetzt docValues ​​= "True".

Das bedeutet, die genaue Wert Suche würde immer noch gegen DocValues ​​auch mit indexed = false arbeiten. Und ab der Schemaversion 1.6 (in Solr 5.5 und 6.0), docValues can be returned auch wenn gespeichert = falsch.

Wenn Sie das nicht gefällt, entfernen docValues ​​= true vom String Typ oder eine andere ähnliche Art ohne diese Flagge erstellen. Oder überschreiben Sie es explizit in Ihren Felddefinitionen.

Verwandte Themen