Du musst das ganz anders machen. Mit treat content as html Ansichten geht es ziemlich sicher (99.9%). Mit der Kombination von Html, Formeln und JavaScript in Ansichten kann man echt eine Menge machen.
Performance-Mässig ist auch WebQueryOpen nie eine gute Idee. V.a. skalliert das nicht bezogen auf gleichzeitig zugreifende User.
Ich bin echt unter zeitdruck, aber vielleicht kann ich am Wochenende eine Session einlegen und deine Requirements wie ich sie verstehe implementieren.
Wenn du über Script gehst, geht es so nicht.
Aber NotesDocumentCollection eben auch nicht, da unsortiert.
Eine Möglichkeit fürs erste wäre eine View zu basteln, wo in der ersten Spalte die Kategorie steht und in der 2. Spalte die DocUnique ID des Dokuments. Dann kannst du das gegenwärtig gewälte Dokument per vw.getDocumentByKey finden und das nächste und vorherige per getNextDocument oder getPreviousDokument. Da kannst du dann abfragen, ob das next- oder prev-Dokument den gleichen Wert im Feld Kategorie besitzt.