Chciałbym zrobić ją dość rozbudowaną - możliwość wyszukiwania wg. nazwy, opisu, treści, daty dodania z pewnego przedziału, daty ostatniej modyfikacji z pewnego przedziału, nicku dodającego itp.
No więc zacząłem szukać informacji o tym, jak utworzyć indeksy dla takiego wyszukiwania i natrafiłem na to:
http://www.kacka.pl/index.php?showtopic=132
Sporo tych indeksów dodał...
Weźmy pod uwagę, że nie zawsze użytkownik wypełni wszystkie pola wyszukiwarki bo np. chce wyszukać tylko w nazwie, a innym razem w treści, a jeszcze innym razem w nazwie i treści.
Czy do stworzenia takiej wyszukiwarki konieczne będzie dodanie aż tylu indeksów?
Tabela:
CREATE TABLE `articles` ( `article_id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT, `article_category_id` tinyint(3) UNSIGNED NOT NULL DEFAULT 0, -- * `article_status` tinyint(3) UNSIGNED NOT NULL DEFAULT 0, `article_views` int(11) UNSIGNED NOT NULL DEFAULT 0, -- * `article_date_added` datetime NOT NULL, -- * `article_date_modified` datetime NOT NULL, -- * `article_desc` tinytext COLLATE utf8_polish_ci NOT NULL, -- * `article_content` mediumtext COLLATE utf8_polish_ci NOT NULL, -- * `article_adder` varchar(12) COLLATE utf8_polish_ci NOT NULL DEFAULT '', -- * `article_last_changer` varchar(12) COLLATE utf8_polish_ci NOT NULL DEFAULT '', `article_name` varchar(64) COLLATE utf8_polish_ci NOT NULL DEFAULT '', -- * `article_safe_name` varchar(64) COLLATE utf8_polish_ci NOT NULL DEFAULT '', PRIMARY KEY (`article_id`), UNIQUE KEY `article_name` (`article_name`), UNIQUE KEY `article_safe_name` (`article_safe_name`), KEY `article_category_id` (`article_category_id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
Pola oznaczone "-- *" to pola wg. których chcę umożliwić wyszukiwanie.
Dodatkowo wyszukiwarka będzie ograniczać wyniki wyszukiwania do artykułów o pewnym statusie.