способов сделать «связанные поиски» функциональность


3

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

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

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

2

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

  0

Это очень похоже на первые шаги пары LSI (http://en.wikipedia.org/wiki/Latent_semantic_indexing), похоже, что это, вероятно, сработает довольно хорошо. (см. следующий комментарий, из космоса) 24 сен. 082008-09-24 00:15:22

  0

Было бы целесообразно рассмотреть, как поиск в исходном поиске действительно выполняется, поскольку это может быть слишком похоже на стандартный подход векторного пространства для поиска документов (http://en.wikipedia.org/вики/Vector_space_model). Если он дублирует ту же логику, то условия не будут иметь такой же ценности. 24 сен. 082008-09-24 00:17:01


2

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

Ваша мысль о сохранении предыдущих запросов кажется мне разумной. Мне было бы интересно посмотреть, как это работает на практике (я имею в виду, что самым искренним образом - существует множество нюансов, которые могут привести к тому, что эти методы потерпят неудачу в «реальном мире», особенно когда данные разрежены).

Вот некоторые методы, которые я использовал в прошлом, и видели в литературе:

подходов, основанных
  1. Тезауруса: Индекс в тезаурус для каждого термина, который используется пользователь, а затем использовать некоторые эвристики для фильтрации синонимов, чтобы показать пользователю возможные термины поиска.
  2. Стебель и поиск по этому вопросу: Поставьте условия поиска (например: с помощью Porter Stemming Algorithm, а затем используйте исходные условия вместо первоначально предоставленных запросов и дайте пользователю возможность поиска ровно условий, которые они указали (или сделайте обратное, сначала найдите точные термины и используйте его, чтобы найти термины, которые связаны с одним и тем же корнем. Этот второй подход, очевидно, требует некоторой предварительной обработки известного словаря, или вы можете собирать термины, как находит их индексный термин.)
  3. Цепочка: проанализируйте результаты, найденные по запросу пользователя, и извлеките ключевые термины из лучших результатов N (KEA - одна библиотека/алгоритм, который вы можете посмотреть на методы извлечения ключевых слов.)
  0

черт возьми, я бы хотел сказать это ... 24 сен. 082008-09-24 00:08:17