Способы выполнения функции “поиск по теме”

StackOverflow https://stackoverflow.com/questions/123900

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

  1. Подходы, основанные на тезаурусе:Проиндексируйте в тезаурусе каждый термин, который использовал пользователь, а затем используйте некоторую эвристику для фильтрации синонимов, чтобы показать пользователю возможные поисковые запросы.
  2. Извлекать и искать по этому:Ограничьте поисковые запросы (например:с помощью Алгоритм Вытекания Портера а затем используйте исходные термины вместо первоначально предоставленных запросов и предоставьте пользователю возможность поиска именно так термины, которые они указали (или сделайте наоборот, сначала выполните поиск по точным терминам и используйте stemming, чтобы найти термины, которые восходят к одному и тому же корню.Этот второй подход, очевидно, требует некоторой предварительной обработки известного словаря, или вы можете собирать термины по мере того, как ваш индексирующий термин находит их.)
  3. Сцепление:Проанализируйте результаты, найденные по запросу пользователя, и извлеките ключевые термины из N лучших результатов (КЕА это одна библиотека / алгоритм, на который вы можете обратить внимание в поисках методов извлечения ключевых слов.)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top