Я пытаюсь создать поисковую систему для своего сайта. Как мне создать таблицу, в которой хранится список индексированных слов.Структура базы данных базы данных для поисковой системы для моего сайта
Раньше я думал, что-то вроде этого:
Таблица: tbl_indexedwords
имеет 2 колонки iw_wordid
и iw_word
.
Таблица: tbl_wordoccurrence
4 колонки wo_occurrenceid
, wo_wordid
, wo_pageid
, wo_numberofoccurrences
.
Теперь этот дизайн не будет работать, если пользователь вводит более двух слов в поле поиска. Предположим, что foo bar
. Даже если foo
и bar
оба присутствуют в таблице tbl_indexedwords
, а соответствующие данные указаны в tbl_wordoccurrence
, мой сценарий поисковой системы оценит результаты, когда он видит максимум wo_numberofoccurrences
для foo
или bar
. Он не увидит, находятся ли foo
и bar
рядом друг с другом, так как нет никакой колонки для порядка появления слов. Надеюсь, я понимаю, что я говорю здесь.
Другой идеей может быть создание таблицы tbl_wordoccurrence
из 3 столбцов. Забудьте о wo_numberofoccurences
и сохраните каждое слово на странице с уникальным wo_occurrenceid
. Теперь это решит мою проблему, поскольку я знаю порядок появления слов. если wo_occurrenceid
какого-то слова wo_occurrenceid
+1 или wo_occurrenceid
-1 какого-то другого слова, то эти два происходят бок о бок.
Проблема с этим дизайном в том, что это займет много места. У меня много контента для моего сайта. Я думаю, что этот подход заставил бы его медленно (не уверен, хотя). Есть ли другой дизайн, который бы мне помог? Или мне придется пойти со вторым? Я уверен, что первый из них не сработает, поэтому отбросить его.
Я бы предложил использовать функцию FULLTEXT вашей системы баз данных (если она предусмотрена) или использовать некоторые готовые фреймворки, такие как ** [Lucene] (http://lucene.apache.org/core/) **, которые достаточно зрелы, чтобы эффективно выполнять свое требование, а не самостоятельно изобретать колесо. –
@RumitParakhiya Работает ли Lucene с php? Я думал, что это для Java! –
У меня действительно нет большой идеи об использовании Lucene с php, но [this SO Question] (http://stackoverflow.com/questions/2010663/lucene-with-php) или [эта ссылка] (http: // lucene.apache.org/solr/) может вам помочь. –