Seite 1 von 1

Suchwort Info wird nicht gefunden

Verfasst: 28.12.2007 19:59
von Nili76
Hallo zusammen,

ich habe kürzlich festgestellt, dass ich in meinem Forum (2.0.22) vieles suchen kann ( :wink: ), aber leider keine Themen oder Beiträge finde, wenn ich nach dem Wort Info suche.

Hat jemand einen Tip, wo ich da mal "suchen" könnte, damit dieses Wort gefunden wird?

Gruß
Nils

Verfasst: 28.12.2007 20:03
von Boecki91
gibt es bei phpBB2 schon sowas wie einen Filter wenn das Wort zu oft vorkommt? eine Art BadWords-Liste (Soll eine Anregung sein)

Bei phpBB3 gibt es sowas. (solangsam habe ich phpBB3 drauf dafür vergesse ich phpBB2 :roll: )

Verfasst: 28.12.2007 20:18
von 4seven
Hallo Nili76,

Schau mal ob in deiner language/lang_german/search_stopwords.txt

das Wort Info zu finden ist. Falls ja, dann..

> Eintrag löschen
> Rebuild Search Index

Falls nicht, hier gibt es eine Anleitung, wie man gewissermaßen steuern kann,
was ausgeschlossen wird (search_stopwords.txt ... @Boecki)

lg
4seven

Verfasst: 28.12.2007 20:41
von Nili76
Danke für die schnellen Antworten.

Leider steht das Wort nicht in der search_stopwords.txt
Ich bin aber mal die Tabelle search_wordlist durchgegangen...
Da steht das Wort info, aber als einziges Wort hat es bei word_common eine 1.

Ich danke aber jetzt schon mal, da mir die Antworten auf jeden Fall schon Anregungen gegeben haben, wo ich ansetzen könnte...

[Nachtrag]
Hab den Wert bei Common auf 0 gesetzt. Danach ein Rebuild search index gemacht. Der Wert wurde wieder auf 1 gesetzt.
[/Nachtrag]

Gruß
Nils

Verfasst: 28.12.2007 22:43
von Boecki91
setze den wert mal wieder auf 0 ohne rebuild.

Verfasst: 28.12.2007 23:04
von Nili76
Klappt auch nicht.... :cry:

Verfasst: 28.12.2007 23:23
von 4seven
Ich weise nochmal auf den Link in meinem letzten Post hin :wink:

Weiterlesen ab..
Mit dieser Anleitung kann man es einstellen, das diese Liste auch benutzt wird.
Desweiteren zeigt ich Euch wie man das meistgenutzte Wort herausfinden kann. Und mit einem kleinen Script, kann man dann alle bisherigen Sucheinträge, die die Wörter von dieser Liste enthalten, entfernen.

Verfasst: 29.12.2007 17:57
von Nili76
Danke, aber hilft auch nicht weiter.

Mittlerweile habe ich die Zeile herausgefunden, in der mein geliebtes Wort Info bei word_common die 1 verpasst bekommt.

In der functions_search.php steht

Code: Alles auswählen

$sql = "SELECT m.word_id FROM " . SEARCH_MATCH_TABLE . " m, " . SEARCH_WORD_TABLE . " w WHERE w.word_text IN ($word_id_sql)  AND m.word_id = w.word_id GROUP BY m.word_id HAVING COUNT(m.word_id) > $common_threshold";
Wenn ich mal alles an Variablen umsetze sieht die Abfrage so aus:

Code: Alles auswählen

SELECT m.word_id FROM phpbb_search_wordmatch m, phpbb_search_wordlist w WHERE w.word_text IN ( 'info', 'nochwas', 'und ganz viele andere Wörter'...... ) AND m.word_id = w.word_id GROUP BY m.word_id HAVING COUNT(m.word_id) > 44
Ist vielleicht jetzt mehr eine Coding Sache, aber kann mir jemand sagen, was die Abfrage eigentlich. macht?

Ich verstehe das bisher so, dass die Word_Table mit der Match_Table verglichen wird. In $word_id_sql stehen 1000ende Wörter drin. unter anderem mein geliebtes Info Wort.
Wieso wird die ID dieses Wortes ausgegeben, während andere Wörter einfach liegen gelassen werden?

Kann es sein, dass alle Wörter, die nun über 44 Treffer ergeben ausgegeben werden?

Dann habe ich ja den Übeltäter gefunden, oder?

Verfasst: 30.12.2007 00:30
von 4seven
Hallo Nili76,
Nili76 hat geschrieben:Kann es sein, dass alle Wörter, die nun über 44 Treffer ergeben ausgegeben werden?
Ja

Beim Rest bin ich mir noch nicht ganz klar drüber.


Noch eine Idee:

Ändere mal folgendes in der includes/functions_search.php

Suche

Code: Alles auswählen

$search_raw_words['text'] = split_words(clean_words('post', $post_text, $stopword_array, $synonym_array));
   $search_raw_words['title'] = split_words(clean_words('post', $post_title, $stopword_array, $synonym_array));
Ersetze mit

Code: Alles auswählen

   $search_raw_words['text'] = split_words(clean_words('post', $post_text, $stopwords_array, $synonym_array));
   $search_raw_words['title'] = split_words(clean_words('post', $post_title, $stopwords_array, $synonym_array)); 
Danach check nochmal im phpMyAdmin mit folgender SQL-Abfrage..

Code: Alles auswählen

SELECT ls.word_id, ls.word_text, COUNT(wm.word_id) as entries FROM `phpbb_search_wordlist` as ls LEFT JOIN `phpbb_search_wordmatch` as wm ON ls.word_id=wm.word_id GROUP BY wm.word_id ORDER BY entries DESC LIMIT 0,50
.. ob "Info" immer noch common > 1 ist

Falls ja, lösche das Wort aus der Liste + language/xxxxx/search_stopwords.txt nochmal checken > Rebuild Search Index

lg
4seven

Verfasst: 30.12.2007 11:13
von Nili76
Herlichen Dank,

nachdem ich gesehen habe, dass bei der SQL Abfrage "nur" ein paar Wörter auf 1 gesetzt wurden, habe ich mal gesucht, wo diese
44 denn herkommt ....

in der /admin/admin_db_maintenance.php steht die Zeile

Code: Alles auswählen

remove_common('single', 4/10, $word_array);
Nachdem ich mal ein nettes // davor gemacht habe, wird nun nach dem rebuild search index kein Wert auf 1 gesetzt.
Soll in diesem Fall auch so sein, da auch nach den Wörtern gesucht werden soll, die häufig aufreten.

Irgendwo wird aber nach einiger Zeit aus einer anderen Aktion her remove common gemacht und mein Info ist wieder 1. Aber das kann ich für mich so lösen, dass die ganze Funktion remove_common keinen Wert auf 1 setzt.

Ich danke für die ganzen Anregungen, da die mich zur Lösung geführt haben.

Gruß
Nils