folgende Ausgangsitation: Frisch installiertes PHPBB3. Die Suchfunktion ist auf fulltext nativ eingestellt. Ein Forum mit einem Thread und einer Antwort:
[Thread 1]Test
ÜBUNG macht den Meister.
---------------------------------
[Antwort]Re: Test
übung macht den Meister.
Versuch A: Gibt man nun den Suchbegriff Übung ein erhält man:
Die Suche ergab 1 Treffer: übung
Man beachte, dass das Wort nun kleingeschrieben ist. Auch in dem HTML-Text-Input-Feld der Suche steht nun übung. Als Treffer wird präsentiert:
Versuch B: Gibt man den Suchbegriff übung ein erhält man:Test
ÜBUNG macht den Meister.
Die Suche ergab 1 Treffer: uebung
Aus dem kleinen Umlaut ü wurde ein ue. Auch in dem HTML-Text-Input-Feld der Suche steht nun uebung. Als Treffer wird präsentiert:
Schaut man sich dazu die Tabelle phpbb_search_wordlist an sieht man auch, dass das Wort Übung in verschiedenen Ausführungen indiziert wurde:Re: Test
übung macht den Meister.
Code: Alles auswählen
word_id word_text word_common word_count
1 übung 0 1
2 macht 0 2
3 den 0 2
4 meister 0 2
5 test 0 2
6 uebung 0 1
Ist das Verhalten von PHPBB korrekt?
Stellt man die Suche auf fulltext mysql um, erhält man 2 Treffer - egal wie man Übung schreibt.
Die entsprechende SQL-Abfrage sieht folgender Maßen aus:
Code: Alles auswählen
SELECT SQL_CALC_FOUND_ROWS p.post_id FROM phpbb_posts p WHERE MATCH (p.post_subject, p.post_text) AGAINST ('+Übung ' IN BOOLEAN MODE) AND p.post_approved = 1 ORDER BY p.post_time DESC
(siehe auch: http://dev.mysql.com/doc/refman/5.1/de/ ... earch.html)
In der Datei search.php findet man folgende Zeile (bei mir Zeile 297):
Code: Alles auswählen
$correct_query = $search->split_keywords($keywords, $search_terms);
Kleine Debuginfos zur Nativen Suche:
($keywords schnappt sich die GET-Variable: $keywords= utf8_normalize_nfc(request_var('keywords', '', true));)
Code: Alles auswählen
Suchbegriff: Übung
URL: http://localhost/phpbb3_test/search.php?keywords=Übung
$keywords : Übung
$search->search_query : übung (nach Aufruf von split_keywords)
SQL: SELECT word_id, word_text, word_common FROM phpbb_search_wordlist WHERE word_text = 'übung' ORDER BY word_count ASC
-------------------------------------------------------------------------------------
Suchbegriff: übung
URL: http://localhost/phpbb3_test/search.php?keywords=übung
$keywords : übung
$search->search_query : uebung (nach Aufruf von split_keywords bzw. cleanup)
SELECT word_id, word_text, word_common FROM phpbb_search_wordlist WHERE word_text = 'uebung' ORDER BY word_count ASC
Code: Alles auswählen
Suchbegriff: Übung
URL: http://localhost/phpbb3_test/search.php?keywords=Übung
$keywords : Übung
$search->search_query : +Übung (nach Aufruf von split_keywords)
-------------------------------------------------------------------------------------
Suchbegriff: übung
URL: http://localhost/phpbb3_test/search.php?keywords=übung
$keywords : übung
$search->search_query : +übung (nach Aufruf von split_keywords bzw. cleanup)
Also nochmal gefragt: Sollte PHPBB nicht korrekterweise ÜBUNG und übung als ein Wort indizieren?
Oder liegt es an meinen Einstellungen/System?
Infos zum System:
- Windows 7 64Bit
- PHPBB 3.0.9
- PHP Version 5.2.11 (Apache 2.0 Handler)
- MySQL 5.1.44-community-log
- Firefox 7.0.1
barra