2015-07-31 2 views
0

Я знаю, что моя логика здесь будет ужасной, так что несите меня. По сути, когда пользователь заполняет форму, состоящую из 3 ящиков ввода (представляющих 3 разных столбца в базе данных), я хочу выполнить поиск, в котором будут выполняться ключевые слова из заполненных полей и искать все другие профили пользователей (составляющие первого имя, опыт, мечты и изображение профиля) в таблице базы данных, содержащей не менее X% ключевых слов из полей ввода исходного пользователя.PHP MYSQLI Поисковый запрос с использованием массива в качестве ссылки

Я решил представить ключевые слова в массиве, так как это то, чем я больше всего знаком с точки зрения организации элементов. Используя этот массив в качестве ссылки, поиск будет сканировать таблицу users для всех пользователей, чья информация профиля содержит X% ключевых слов в ссылочном массиве.

Массив уже подготовлен, но теперь мне нужно руководство относительно того, подходит или нет способ, которым я хочу закончить задачу, подходящий/действительный.

EDIT 1: Простите меня, если неясно, позвольте мне попробовать более разрозненный способ изобразить задачу.

  1. Пользователь заполняет 3 уникальных текстовых поля.
  2. Пользователь сохраняет введенные данные, в которых эти данные хранятся в базе данных (users таблицу конкретны)
  3. Пользователь переходит в «Найти другие» страница
  4. пользователь нажимает на кнопку «Найти»
  5. Запрос принимает пользовательская информация из 3 текстовых областей, фильтрует их индивидуально, а затем сжимает их в один массив ключевых слов.

    1. Другой запрос будет искать всю базу данных и отображать профили других пользователей, чьи профили содержат X% слов, соответствующих ключевым словам в массиве.
    2. Пользователь видит профили других пользователей с похожими словами в информации об их профилях.

массив, который будет содержать ключевые слова:

$compressed_array = array_merge($filtered1, $filtered2, $filtered3); 
+0

ваш вопрос непонятно. не могли бы вы немного понять, чего вы пытаетесь достичь? В идеале предоставление некоторого (псевдо) кода? – Burki

+0

@Burki Я бы включил код, который я рассматриваю для проведения поиска, но я никогда не выполнял никаких задач, связанных с поиском, в этом масштабе и чувствовал себя потерянным. –

+0

то, что вы описываете, должно быть технически возможным. Самая большая потенциальная проблема - производительность: в зависимости от количества записей, которые вы обрабатываете, ваши запросы будут очень медленными. Некоторые из них можно преодолеть, указав индекс в своих столбцах.Если вы планируете иметь большой объем записей, прочитайте на [Solr] (http://lucene.apache.org/solr/). – Burki

ответ

1

Вы можете попробовать несколько иной подход.
Когда пользователь создает свои записи, найдите ключевые слова и в таблице соответствия сопоставьте ключевые слова с пользователями.
Таким образом, вы можете запросить таблицу соответствия, которая должна меня намного быстрее и проще запрашивать.
Или вы используете полномасштабную поисковую платформу, например Solr, которая делает более-менее то же самое.

Любая попытка поиска таблицы пользователей в режиме реального времени будет иметь огромные проблемы с производительностью, как только вы будете обрабатывать значительное количество записей.

+0

Предложение сопоставимой таблицы кажется более удобным для меня, так как у меня нет опыта использования таких программ, как Solr (я обязательно его уступлю после того, как я получу подходящий метод таблицы), спасибо. Как мне настроить и использовать таблицу? Похоже, у меня есть больше чтения, чем ожидалось. –

+0

вам нужно взглянуть на синтаксис 'join'. Если вы это прочитаете, вы должны найти хорошие примеры, которые укажут вам в правильном направлении. – Burki

Смежные вопросы