- App
- WoltLab Suite Core
There is no Elasticsearch forum (there should be). My proposal is that WoltLab make the following changes to improve the search algorithm for better results.
Display MoreIch hab mir jetzt mal das ganze Problem mit der sehr bescheidenen suche genauer angeschaut und festgestellt, dass das wbb die sortierung nach relevanz schlicht verbietet.
Ich für meinen Teil fand das inakzeptabel und habe daher selbst hand angelegt und mit 2 kleinen änderungen das wbb davon überzeugt braucbarere ergebnisse zu liefern:Zuerst in der Dateiwbb/lib/system/event/listener/SearchListener.class.php in Zeile 33 $eventObj->sortField = 'time'; durch //$eventObj->sortField = 'time'; ersetzen.
Und danach in der Datei wcf/lib/system/search/mysql/MysqlSearchEngine.class.php in Zeile 79 if (!empty($orderBy)) { durch if (!empty($orderBy) && $orderBy != 'relevance ASC' && $orderBy != 'relevance DESC') { ersetzen.[EDIT]
in der Datei wbb/lib/system/search/PostSearch.class.php 302-318:PHP: wbb/lib/system/search/PostSearch.class.php Display Morereturn "SELECT thread.threadID AS objectID, thread.topic AS subject, thread.time, thread.username, 'com.woltlab.wbb.post' AS objectType FROM wbb".WCF_N."_thread thread INNER JOIN ( SELECT DISTINCT post.threadID FROM wbb".WCF_N."_post post INNER JOIN ( {WCF_SEARCH_INNER_JOIN} ) search_index ON (post.postID = search_index.objectID) WHERE post.isDeleted = 0 AND post.isDisabled = 0 ".($this->findAttachments ? "AND post.attachments > 0" : '')." ".($this->findPolls ? "AND post.pollID IS NOT NULL" : '')." ) AS subselect ON (thread.threadID = subselect.threadID) ".($additionalConditions !== null ? $additionalConditions : '');
ersetzt werden durch:
PHP: wbb/lib/system/search/PostSearch.class.php Display Morereturn "SELECT thread.threadID AS objectID, thread.topic AS subject, thread.time, thread.username, 'com.woltlab.wbb.post' AS objectType, subselect.relevance FROM wbb".WCF_N."_thread thread INNER JOIN ( SELECT DISTINCT post.threadID, search_index.relevance FROM wbb".WCF_N."_post post INNER JOIN ( {WCF_SEARCH_INNER_JOIN} ) AS search_index ON (post.postID = search_index.objectID) WHERE post.isDeleted = 0 AND post.isDisabled = 0 ".($this->findAttachments ? "AND post.attachments > 0" : '')." ".($this->findPolls ? "AND post.pollID IS NOT NULL" : '')." ) AS subselect ON (thread.threadID = subselect.threadID) ".($additionalConditions !== null ? $additionalConditions : '');
[/EDIT]
Und damit das dann auch standartmäßig genutzt wird empfehle ich noch unter System / Optionen / Nachrichten / Suchfunktion im ACP die Standardsortierung auf Relevanz und die Standardreihenfolge auf Absteigend einzustellen.
Interesannterweise besteht das exakt gleiche Problem auch hier bei woltlab mit der elasticseach suche, wodurch diese ihren Vorteil, nämlich die deutlich besseren Suchergebnisse, gar nicht ausnutzen kann. Stattdessen bekommt man nur stumpf alle Themen / Beiträge angezeigt die die Suchbegriffe enthalten und sortiert diese dann nach der Zeit -.-