Возврат результатов из поисковой системы на основе тегов - PullRequest
1 голос
/ 03 февраля 2012

Итак, я создаю поисковое приложение.Мое приложение связывает несколько терминов / тегов с документом.Например,

Doc 1
- School
- Books
- Teachers
- ...

Doc 2
- Obama
- Terror
- Election
- ...

Doc 1000
- Google
- Facebook
- Books
- ...

В настоящее время я использую MySQL в качестве базы данных.Таблица документов содержит около 100 000 строк.

Итак, мои вопросы:

Предположим, пользователь вводит запрос "Школьные учебники", который затем переводится в два тега (школа, книги)

  • Как получить все документы с этими тегами
  • Документы, имеющие два связанных с ними тега, должны иметь более высокий рейтинг, чем документы с одним тегом.Есть ли способ выполнить это ранжирование только с помощью оператора / запроса SQL
  • Является ли это кумулятивным, что все возможные результаты будут возвращены пользователю?Могу ли я просто установить лимит (скажем, 10 000)

Спасибо.

РЕДАКТИРОВАТЬ

База данных состоит из 3 таблиц.

  1. Теги - для тегов
  2. Документ - Документы
  3. Document_Tags - Документы связаны с тегами

1 Ответ

0 голосов
/ 03 февраля 2012

Вы не описываете свою модель данных, поэтому я предполагаю, что у вас есть таблица, по крайней мере, (document, tag).

Затем вы можете сделать ...

SELECT
  document,
  COUNT(DISTINCT tag)
FROM
  yourTable
WHERE
  Tag IN ('school', 'books')
GROUP BY
  document
ORDER BY
  2 DESC
LIMIT
  10000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...