Questions & Answers

SOLVED
aVogt
Returning Creator

Exalead:cloudview Anzeige von Merkmalen in den Suchtreffern

Jump to solution

Hallo,

wie verwenden Exalead:cloudview 5.1.9.24000 (auf Solaris - ich hoffe es liegt nicht daran), dabei ist einem Nutzer folgender Fehler aufgefallen:

Ein Suchtreffer/-Eintrag kan mehreren Produkten zugeordnet sein. Bei der Ausgabe des Merkmales Produkt wird mir aber nur eine Zuordnung  angezeigt (obwohl es mehrere gibt).

Ausgabe per:
<search:hits_field key="gaf_produkte"><b>Produkt(e):</b><%=value%> <br /></search:hits_field>
innerhalb von <search:loop_hits>

Bei der Verfeinerung werden alle Produkte angeboten, denen der Suchtreffer zugeordnet wurde. (Ich habe so gesucht, dass nur ein Treffer mit zwei Produkten angezeigt wird)

Also
Sucheintrag ist Produkt A und B zugeordnet
- bei der Ausgabe des Feldes Produkt innerhalb der Iteration รผber die Suchergebnisse wird nur 1 Produkt angezeigt
- in der Suchverfeinerung werden alle Produkte angezeigt

Muss die Ausgabe anders vorgenommen werden oder handelt es sich um einen Bug?

GrรผรŸe
Andreas

0 Kudos
1 Solution

Accepted Solutions
marro
Crownpeak employee

Bug wurde in den Versionen 1.7 und 2.1 des EnterpriseSearch-Moduls gefixt.

[RELEASE] EnterpriseSearch module 1.7 / 2.1

View solution in original post

0 Kudos
16 Replies
marro
Crownpeak employee

Hallo Andreas,

ich habe versucht, das mal hier nachzustellen, allerdings mit unserem PushSkript. Ihr verwendet ja ein eigenes, richtig? Unser PushSkript nimmt eine automatische Splittung der Metadaten vor und fรผgt jeden einzelnen Wert unter demselben Namen als Metaattribut dem Dokument hinzu.

Wird bspw. der Wert "test1,test2,test3" als Metaattribut fรผr ein Dokument gesetzt und mit unserem Skript gepusht, erhรคlt man in der Verfeinerung automatisch die drei Punkte "test1", "test2" und "test3". Bei der Ausgabe des Feldes werden die drei Werte zusammen ausgegeben, jeweils getrennt durch ein Leerzeichen (siehe Screenshot): screenshot.jpg

Auf Exalead-Seite wurde nichts speziell konfiguriert (kein Splitting oder รคhnliches).

Nun wรคre es interessant zu wissen, wie euer PushSkript die einzelnen Produkte pusht. Werden die Produkte zu einem Dokument einzeln, jedoch alle unter demselben Namen hinzugefรผgt, dann sollte in der Ausgabe des Feldes wie oben beschrieben eine durch Leerzeichen getrennte Liste ausgegeben werden.

Viele GrรผรŸe

Donato

0 Kudos
aVogt
Returning Creator

Hallo Donato,

Ja, wir verwenden ein eigenes Script.

> Nun wรคre es interessant zu wissen, wie euer PushSkript die einzelnen Produkte pusht.

 

...

PushAPIDocumentValues doc = new PushAPIDocumentValues();

HashMap metaAttributes = new HashMap();

metaAttributes.put("gaf_produkte", gafProdukte); // gafProdukte ist eine Kommaseparierte Aufzรคhlung

...

doc.setMetaAttributes(metaAttributes);

...

pushApiGaf.sendDocument(doc);

Die Produkte werden also als Metaattribut รผbergeben. Somit muss ich m.E. eine Liste รผbergeben.

Wenn ich fรผr jedes doc das Produkt mit:

metaAttributes.put("gaf_produkte", [NUR EIN PRODUKT]);

setzte und das fรผr jedes Produkt wiederhole, wird ja nur das letzte genommen.

> Auf Exalead-Seite wurde nichts speziell konfiguriert (kein Splitting oder รคhnliches).

Bei uns eigentlich auch nicht (so weit ich das รผberblicke)

" Einstellungen habe ich fรผr das merkmal gefunden (siehe Anlagen)

GrรผรŸe

Andreas

0 Kudos
marro
Crownpeak employee

Hmm, das ist seltsam. Genauso wie Du es gerade geschrieben hast, bin ich in meinem Test auch vorgegangen:

HashMap map = new HashMap();

map.put("md_text", "test1,test2,test3");

doc.setMetaAttributes(map);

Und dabei habe ich die Ausgabe aus dem Screenshot erhalten.

Wie sieht bei euch denn die Ergebnisseite von Exalead aus? Wird dort ebenfals nur ein Produkt ausgegeben oder sieht man dort beide Produkte unterm Treffer?

GrรผรŸe

Donato

0 Kudos
aVogt
Returning Creator

In Exalead wird alles so ausgegeben wie gewรผnscht (also alle Produkte zu einem Treffer).

Bei der Ausgabe der Suchtreffer gebe ich das merkmal Produkte wie folgt aus:

<search:hits_field key="gaf_produkte"><b>Produkt(e):</b><%=value%> <br />
</search:hits_field>

Da wird mir immer nur das letzte aus der Liste (das per Metaattribut รผbergeben wurde) angezeigt.

Ich kann aber direkt nach nach einem Produkt abfragen:

z.B.

<search:is_in_category fullPath="Top/gaf_produkte/0225">0225</search:is_in_category>

Das liefert fรผr alle Produkte des Treffers true

GrรผรŸe

Andreas

0 Kudos
marro
Crownpeak employee

Hier mal ein Screenshot meiner Suchergebnisseite, auf der ich das Attribut ebenfalls รผber

<search:hits_field key="md_text"><br/><b>md_text: </b><%= value %></search:hits_field>

ausgebe:

screenshot.jpg

Wenn das Pushen und die Ausgabe bei uns beiden identisch ist, dann kann es eigentlich nur noch eine Exalead-Einstellung sein. Kannst Du noch mal unter Process -> Analysis -> Document Processors nachschauen, ob da nicht vielleicht doch irgendein Parsing fรผr das Attribut eingestellt ist?

GruรŸ

Donato

0 Kudos
aVogt
Returning Creator

> Wenn das Pushen und die Ausgabe bei uns beiden identisch ist, dann kann es eigentlich nur noch eine Exalead-Einstellung sein.

Sehe ich eigentlich fast auch so. Allerdings sollten sich doch die Exalead-Einstellungen doch auch auf die Exalead-Suche auswirken, oder?

>Du noch mal unter Process -> Analysis -> Document Processors

Ich habe nichts direkt fรผr das Merkmal gefunden.

Unter "csv_encoder - Multi-Context Encoder" ist es aufgelistet. Process Unmapped Contexts ist deaktiviert

0 Kudos
marro
Crownpeak employee

Stimmt, da hast Du natรผrlich Recht. Eine Exalead-Einstellung sollte sich dann auch auf die Darstellung auf der Exalead-Seite auswirken.

Bei mir ist das Metadatum nicht unter csv_encoder - Multi-Context Encoder aufgelistet. Ich habe es aber mal hinzugefรผgt und es รคndert nichts an der Ausgabe.

Kannst Du mal schauen, was ausgegeben wird, wenn Du das Feld nicht รผber das Tag ausgibst, sondern direkt darauf zugreifst รผber:

<%= ((com.exalead.searchapi.xmlv10.client.SearchAnswer) pageContext.getSession().getAttribute("searchAnswer")).getHits().get(0).getMeta("gaf_produkte").getValues().get(0).getStringValue() %>

(der Ausdruck gibt nur das Feld des ersten Suchtreffers wieder, also bitte die Suche wieder so einschrรคnken, dass nur ein Treffer ausgegeben wird)

GruรŸ

Donato

0 Kudos
aVogt
Returning Creator

Da wird leider auch nur ein Produkt angezeigt.

GruรŸ

Andreas

0 Kudos
aVogt
Returning Creator

((com.exalead.searchapi.xmlv10.client.SearchAnswer) pageContext.getSession().getAttribute("searchAnswer")).getHits().get(0).getMeta("gaf_produkte").getValues()

liefert:

[0046, 0225]

Das ist Richtig!!

Das letzte get(0) gibt doch bestimmt nur den ersten Wert der Liste zurรผck, oder?

GruรŸ

Andreas

0 Kudos

Type a product name