Поиск релевантности из XML-документов (XQuery?) Против MySQL - PullRequest
0 голосов
/ 15 апреля 2010

У меня есть веб-сайт, на котором документы сохраняются в XML-документах с одинаковой структурой.

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

Я подумал, что (?) Может быть хорошей идеей использовать XQuery вместо того, чтобы хранить информацию дважды (в базе данных XML + база данных MySQL) и запрашивать базу данных MySQL для поиска релевантности.

Является ли XQuery полезным для этого, и как, и какую скорость можно ожидать для +1000 документов размером около 7 КБ каждый.

Спасибо за ваше время.

С уважением

Ответы [ 2 ]

1 голос
/ 15 апреля 2010

Если у вас есть +1000 документов, по которым выполняется поиск по запросу, использование jQuery и баз данных SQL неэффективно.

1) Выполнение последовательного поиска по каждому документу по каждому ключевому слову займет у вас не менее, чем # документов * Количество слов в каждом документе * Количество ключевых слов

2) Каждый раз, когда вы выполняете поиск, каждый документ должен быть снова отсканирован. Если у вас есть проект, который включает поиск много раз, это неосуществимо.

3) Последовательный поиск не дает возможности ранжировать результаты на основе количества найденных слов и общего количества слов в документе, а также важности или каждого слова и т. Д. *

Лучшей альтернативой является использование структуры данных Inverted Index для «индексации» ваших документов и слов заранее.

Таким образом, вы сначала проделаете некоторую работу, чтобы проиндексировать каждое слово в каждом документе, но вы сэкономите много времени при выполнении реального поиска (что имеет значение).

Еще одним преимуществом является то, что вы сможете ранжировать документы не по назначению. См. Модель векторного пространства .

0 голосов
/ 18 апреля 2010

Если вы хотите найти решение для поиска XML-документов (только поиск и не сложные транзакции с документами), я бы предложил Apache - поисковую систему Lucene.

Последняя версия Apache Lucene 3.x имеет функции поиска по спуску.

сверху вы можете использовать Apache-Solr, который использует lucene, поскольку поисковая система имеет все административные функции, граненый просмотр и полезные нагрузки. (Примечание: реализация Lucene доступна также на всех языках .NET, Java, Python, Ruby).

если вы хотите какое-то действительно основанное на XQuery решение с открытым исходным кодом - учитывая объем вашего документа, попробуйте eXist Xml Database. загрузите все ваши документы Xml в базу данных eXists и затем используйте XQuery. Но этот подход требует -

  1. Загрузка всех ваших XML-документов в базу данных eXists
  2. Запись модулей XQuery для запроса этих документов в набор результатов Xml
  3. Поговорите с этими модулями XQuery непосредственно из вашего приложения, чтобы получить результаты.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...