Suche mehrere Felder in SOLR
Ich bin mit der Suche auf 2 Feldern ohne Angabe von Feldname in der Abfrage. In meinem schema.xml ich habe 2 Felder, entsprechen 2 Spalten in einer Datenbank-Tabelle.
<field name="title" type="string" indexed="true" stored="true" required="true"/>
<field name="description" type="string" indexed="true" stored="true"/>
Zusätzlich habe ich ein 3. Feld, die ich verwenden will als ein Ziel im "copyField"
und auch als die "defaultSearchField"
<field name="combinedSearch" type="string" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="combinedSearch"/>
<uniqueKey>title</uniqueKey>
<defaultSearchField>combinedSearch</defaultSearchField>
Nun in der Solr Admin-UI, wenn ich geben Sie einige Titel wird es wieder Ergebnisse, aber wenn ich geben Sie eine kurze Beschreibung, es wird nicht etwas zurückzugeben.
Es scheint nur das erste Feld ist für die Suche verwendet. Bin ich mit copyField und defaultSearchField in der richtigen Weise?
Ich hab neu gestartet den solr-server und regeneriert den index.
Danke.
- Hallo dev, wie Sie dieses problem lösen nun? Kannst du die richtige Antwort?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich es endet im selben Ergebnis, aber zu Ihrer information, ich benutze copyField am Ende der schema.xml (aber ich glaube nicht, die Reihenfolge ist relevant) in der folgenden syntax:
weiter:
Wenn
type="text"
ist die bessere Wahl, hängt von der definition von "string". Wenn Sie mit Standard-fieldTypes,type="string"
könnte besser für Ihren Fall, weil fürstring
es gibt keine Analyse per default, was bedeutet, dass (wahrscheinlich) gibt es auch keine tokenyzing.//update
Einer anderen Art und Weise statt copyfields ist die Verwendung des (e)dsimax query-parser. Auf
solrconfig.xml
Sie können festlegen, dass alle das Feld nach dem Sie suchen möchten standardmäßig, wie diese:Versuchen, ändern Sie Ihre
combinedSearch
Typtext
und dann den index erneut generieren.Hier ist, wie ich es angegangen. Anstelle der Verwendung von * alias habe ich definiert, welche Felder zu kopieren, auf meine kombinierte Feld. Ich saß auch mehrwertige false auf meinem normalen Felder (Titel und Beschreibung). Statt der Festlegung meiner Felder als string habe ich "text_general" - sowohl für meine normalen Felder und meine kombinierte Feld.
Darüber habe ich mir gesetzt "gespeichert=false" auf meine kombinierte Feld, so wie ich brauchen nicht, um den Rückgabewert, da es nur für die Suche verwendet - in meinem Fall zumindest.