Suche Programmieren?

hi,

ich habe mal ne Frage,
zwar würde mich mal interessieren, wie man am besten eine Suchfunktion programmiert
und auch ob man das überhaupt muss, oder ob es da evtl. etwas gutes gibt, weshalb sich das Programmieren garnicht lohnen würde.

Zwar geht es darum,
dass ich eine Zentrale Suchfunktion haben möchte.
Diese Suchfunktion muss einmal phpBB (also das Forum) durchsuchen können,
da auch sehr präzise sein, d.h. nicht irgendwie schlampig irgendwas auslassen oder so.

Dann sollte die Suche auch noch in verschiedenen Systemen suchen können, so z.B.
auf einfachen Static Content Seiten, z.B. der Startseite, aber auch wieder in anderen Content Management Systemen wie z.B. dem CMS “Citus CMS”, das hier vorgestellt wurde.

Was auch pflicht ist:
Man soll über ein Menü (vielleicht mit Reitern, vielleicht auch auf der linken Seite ein normales Menü) wählen können, was man durchsuchen möchte.

Am besten wäre hier, wenn man sogar noch auf Forenbereiche verfeinern könnte.
D.h. ich suche z.B. nach dem Begriff “Linux” und dann werden alle Bereiche im Menü angezeigt, wo was gefunden wird.

So z.B. eine Box “Forum” und in dieser dann alle Forenkategorien, wo etwas gefunden wurde.
z.B. so:

Forum
News
Linux Distributionen
Wöchentliche Umfrage
Sicherheit

Citus CMS
Kategorie 1
Testkategorie 2
xyz123

So z.B. - natürlich soll da später nicht “Citus CMS” stehen, ich verrate jetzt nur noch nicht, wozu das gedacht ist.
Klicke ich z.B. auf “Forum”, dann verfeinert sich die Suche aufs Forum, d.h. ich sehe schonmal nur noch Funde aus dem Forum, klicke ich z.b. auf “Linux Distributionen” in der Box “Forum”, dann verfeinert sich die Suche nicht nur aufs Forum, sondern auf die einzelne Foren Kategorie “Linux Distributionen”.

Ich brauche so eine umfangreiche Suche,
da es sonst wenn das ganze fertig ist so ziemlich unmöglich ist noch etwas zu finden,
durch diese Möglichkeit der Verfeinerung bleibt das ganze eben übersichtlich und ordentlich.

Liebe Grüße
Jan

phpBB hat eine Suchfunktion eingebaut, die kannst du bequem per Include verwenden.
Wie das mit dem CitusCMS aussieht ist wohl noch nicht klar…

Ja schon, ich weiß, dass es eine Suchfunktion hat,
aber ich möchts ja so wie beschrieben, alles in einem und nicht diese Standard Suche von phpBB :wink:

Liebe Grüße
Jan

„Alles in einem“ bekommst du nicht so ohne weiteres, wenn die Daten an verschiedenen Orten/in verschiedenen Systemen abgelegt sind.

Da muss man schon einzelne Suchfunktionalitäten erstellen, deren Ergebnisse dann, ggf. gewichtet und nach Nutzerauswahl beschränkt, zusammengeführt werden.

hmm ja ich kenne mich mit Suchfunktionen da garnicht aus,
nur möchte ich halt nicht, dass in jedem Bereich ne extra Suche ist.

Es gibt soviele Bereiche und wie soll das denn aussehen?
Man hat 10 verschiedene Suchfunktionen und muss sich erst in jeden Bereich reinklicken damit man dort suchen kann und dann noch alles mit nem anderen Suchsystem? :astonished:

Das kann man vielleicht zusätzlich machen,
aber generell sollte es eine Suchbox im Header geben,
wo man was eingibt und dann findet man wie gesagt Ergebnisse aus
dem Citus CMS z.B. Ergebnisse ausm Forum und Ergebnisse aus allen möglichen anderen Bereichen.

Liebe Grüße
Jan

[quote=“Jan Kaiser”]aber generell sollte es eine Suchbox im Header geben,
wo man was eingibt und dann findet man wie gesagt Ergebnisse aus
dem Citus CMS z.B. Ergebnisse ausm Forum und Ergebnisse aus allen möglichen anderen Bereichen.[/quote]
Dann sorge dafür, dass im Hintergrund die einzelnen Suchen durchgeführt und ihre Ergebnisse zusammengeführt werden.

Trenne zwischen Eingabe/Präsentation und Programmlogik.

Du kannst die phpBB-Interne Suche problemlos verwenden :ps:

<?php

define('IN_phpBB', true);
$phpbb_root_path = (defined('phpBB_ROOT_PATH')) ? phpBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('search');

	$search_type = basename($config['search_type']);

	if (!file_exists($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx))
	{
		trigger_error('NO_SUCH_SEARCH_MODULE');
	}

	require("{$phpbb_root_path}includes/search/$search_type.$phpEx");

	// We do some additional checks in the module to ensure it can actually be utilised
	$error = false;
	$search = new $search_type($error);

	if ($error)
	{
		trigger_error($error);
	}

	// let the search module split up the keywords
	if ($keywords)
	{
		$correct_query = $search->split_keywords($keywords, $search_terms);
		if (!$correct_query || (empty($search->search_query) && !sizeof($author_id_ary) && !$search_id))
		{
			$ignored = (sizeof($search->common_words)) ? sprintf($user->lang['IGNORED_TERMS_EXPLAIN'], implode(' ', $search->common_words)) . '<br />' : '';
			trigger_error($ignored . sprintf($user->lang['NO_KEYWORDS'], $search->word_length['min'], $search->word_length['max']));
		}
	}

	if (!empty($search->search_query))
	{
		$total_match_count = $search->keyword_search($show_results, $search_fields, $search_terms, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $m_approve_fid_ary, $topic_id, $author_id_ary, $id_ary, $start, $per_page);
	}

Das ist jetzt nur ein Beispiel das warscheinlich nicht funktioniert. Aber es zeigt das Grundprinzip :wink:

hmm versteh ich zwar noch net so ganz aber ich schau dann halt mal…

danke euch :slight_smile: