анализ ключевых слов поисковой системы - PullRequest
2 голосов
/ 21 октября 2010

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

Я думаю (надеюсь), что использовал бы метод HttpUtility.ParseQueryString, но моя проблема заключается в попытке выяснить, какую переменную нужно анализировать. У меня есть следующий список, который я должен проверить. Список показывает поисковую систему и параметр, который использует каждый.

daum:q,
eniro:search_word,
naver:query,
images.google:q,
google:q,
yahoo:p,
msn:q,
bing:q,
aol:query,
aol:encquery,
lycos:query,
ask:q,
altavista:q,
netscape:query,
cnn:query,
about:terms,
mamma:query,
alltheweb:q,
voila:rdata,
virgilio:qs,
live:q,
baidu:wd,
alice:qs,
yandex:text,
najdi:q,
aol:q,
mama:query,
seznam:q,
search:q,
wp:szukaj,
onet:qt,
szukacz:q,
yam:k,
pchome:q,
kvasir:q,
sesam:q,
ozu:q,
terra:query,
mynet:q,
ekolay:q,
rambler:words

Так что, хотя я мог бы пройтись по каждому и сказать что-то вроде

NameValueCollection query = HttpUtility.ParseQueryString(UrlReferrer);
var referrer = Request.UrlReferrer.ToString();

if(referrer.Contains("google.com")
     return (query["q"]);
else if(referrer.Contains("yahoo.com")
     return (query["p"]);

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

1 Ответ

6 голосов
/ 22 октября 2010

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

private string GetKeywords(string urlReferrer)
    {
        var searchQuery = string.Empty;
        var url = new Uri(urlReferrer);
        var query = HttpUtility.ParseQueryString(urlReferrer);
        switch (url.Host)
        {
            case "google":
            case "daum":
            case "msn":
            case "bing":
            case "ask":
            case "altavista":
            case "alltheweb":
            case "live":
            case "najdi":
            case "aol":
            case "seznam":
            case "search":
            case "szukacz":
            case "pchome":
            case "kvasir":
            case "sesam":
            case "ozu":
            case "mynet":
            case "ekolay":
                searchQuery = query["q"];
                break;
            case "naver":
            case "netscape":
            case "mama":
            case "mamma":
            case "terra":
            case "cnn":
                searchQuery = query["query"];
                break;
            case "virgilio":
            case "alice":
                searchQuery = query["qs"];
                break;
            case "yahoo":
                searchQuery = query["p"];
                break;
            case "onet":
                searchQuery = query["qt"];
                break;
            case "eniro":
                searchQuery = query["search_word"];
                break;
            case "about":
                searchQuery = query["terms"];
                break;
            case "voila":
                searchQuery = query["rdata"];
                break;
            case "baidu":
                searchQuery = query["wd"];
                break;
            case "yandex":
                searchQuery = query["text"];
                break;
            case "szukaj":
                searchQuery = query["wp"];
                break;
            case "yam":
                searchQuery = query["k"];
                break;
            case "rambler":
                searchQuery = query["words"];
                break;
            default:
                searchQuery = query["q"];
                break;
        }
        return searchQuery;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...