Inhalte aufrufen

Profilbild
- - - - -

SearchController.cs anpassen in Version 4

"\r\n48661

  • Bitte melden Sie sich an, um eine Antwort zu verfassen.
13 Antworten zu diesem Thema

#1 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 21 May 2024 - 09:54

Hallo,

 

ich möchte gerne die Methode public ActionResult Search(CatalogSearchQuery query) so anpassen, dass ich eine eigene Liste an Artikeln ausgeben kann und dass alles weitere aber bestehen bleibt. Ich habe eine List<string> von SKUs, die ich als SearchResult ausgeben will. Meine bisherigen Versuche waren nur teilweise erfolgreich, weil ich das Problem hatte, dass bestimmte Funktionen, wie Filterung, Sortierung usw. nicht mehr funktioniert, wenn ich meine eigene Aritkelliste erstelle.

 

Wie kann ich das also richtig machen, sodass "CatalogSearchResult result" richtig setze?

 

Vielen Dank.


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#2 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3819 Beiträge

Geschrieben: 21 May 2024 - 10:26

Tiefer ansetzen, indem man z.B. mittels eines Event-Handlers auf CatalogSearchedEvent reagiert und über CatalogSearchedEvent.Result sein eigenes Ergebnis-Objekt zurück liefert.
 
Noch eleganter wäre ein Handler für CatalogSearchingEvent, welches vor der Suche gesendet wird und über das man die CatalogSearchQuery manipulieren/anpassen kann auf dessen Basis gesucht wird. Dazu müsste man die Produkt-IDs für die SKUs ermitteln und nach diesen über einen Aufruf von CatalogSearchQuery.WithProductIds filtern lassen. Diesen Weg würde ich versuchen.

Marcus Gesing

Smartstore AG


#3 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 24 May 2024 - 19:14

ok vielen Dank.

Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#4 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 24 May 2024 - 20:12

wenn ich das suchergebnis überschreibe oder übernehme, muss ich dann die filterung, also die specificationsattribute (siehe screenshot) selbst implementieren oder kann das weiterhin der bisherige searchservice machen? mir geht es nur darum, die sku-liste, bzw die product-id liste vorzugeben.

 

 

Angehängte Bilder


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#5 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3819 Beiträge

Geschrieben: 24 May 2024 - 20:37

Alle Ergebnisse - Suchtreffer wie Filter (also auch jene für Spezifikationsattribute) - richten sich nach der CatalogSearchQuery. Wenn Sie diese also mittels CatalogSearchingEvent Ihren Bedürfnissen anpassen, dann brauchen Sie im Nachgang nichts weiter zu machen.

Marcus Gesing

Smartstore AG


#6 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 24 May 2024 - 20:45

ok ich bin dran, aber dass da kein missverständnis entsteht, ich will kein plugin bauen, ich will das direkt im src machen. ich versuche jetzt mal irgendwie in der Datei CatalogSearchEvent.cs irgendwas am CatalogSearchingEvent zu manipulieren...


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#7 Marcus Gesing

Marcus Gesing

    SmartStore AG

  • Administrators
  • 3819 Beiträge

Geschrieben: 24 May 2024 - 20:53

Dann könnten Sie die CatalogSearchQuery Instanz auch direkt im SearchController anpassen.


Marcus Gesing

Smartstore AG


#8 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 24 May 2024 - 20:56

im prinzip so, siehe screenshot.

Angehängte Bilder


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#9 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 24 May 2024 - 21:29

leider funktioniert das nicht. es werden nicht die von mir bestimmten ids/skus angezeigt...muss ich irgendwas mit CatalogSearchResult result machen?

oder wie muss ich die CatalogSearchQuery Instanz denn genau anpassen, damit der rest so funktioniert, wie als würden die artikel von der bisherigen engine gefunden werden?


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#10 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 24 May 2024 - 21:47

vielleicht noch ein missverständnis: ich will nicht, dass die lucene engine in den vorgelegten ids noch sucht. ich will dass das suchergebnis aus den von mir zusammengestellten skus/ids besteht. es soll nicht darin noch gesucht werden. lediglich die aufsplittung in die specattribute soll erfolgen, wie bisher.


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#11 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 24 May 2024 - 22:25

ich glaub ich habs :-)
 
die CatalogSearchQuery instanz passe ich so an und fülle meine id liste:

query = query.WithProductIds(new int[] { 1, 2, 3, 4, 5, 6, 7 });  

und dann muss man die suche über den CatalogSearchService durchführen lassen, aber zuvor muss man den term aus dem query nehmen:

  string term = query.Term;
  query.Term = string.Empty;
  result = _catalogSearchService.Search(query);

damit der suchbegriff oben rot noch erscheint, habe ich das gemacht:

model.Term = term;

allerdings erscheint der begriff nicht mehr in dem suchfeld oben. ist aber nicht so schlimm.


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#12 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 24 May 2024 - 23:55

ich musste noch die sortierung rausnehmen bei relevence, weil ich es selber sortieren will.

Angehängte Bilder


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#13 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 25 May 2024 - 00:43

leider klappt das mit der eigenen sortierung doch nicht so...


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html

 

 

 


#14 wseibel

wseibel

    Advanced Member

  • Members
  • PunktPunktPunkt
  • 37 Beiträge

Geschrieben: 25 May 2024 - 01:43

so klappt es:

 result = _catalogSearchService.Search(query);

 if (query.Sorting.ToArray()[0].FieldName.IsEmpty())     // RELEVANCE
 {
     // Re-sorting result
     for(int i = 0; i < productList.Count; i++)
     {
         result.HitsEntityIds[i] = productList[i].Id;
     }       
 }

 


Sydesoft GmbH
Haferstr. 20
49324 Melle
Tel.: +49 5422 96 399 25
Web:

http://www.sydesoft.de

https://www.sydesoft.de/webshop-erstellen.html