Google CSE: отображение количества результатов

Я реализовал поиск по сайту Google / пользовательский поиск для своего веб-сайта, и все это работает, и результаты отформатированы и нормально разбиваются на страницы. Но он никогда не возвращает число найденных результатов, как это происходит при поиске в Google About 1,660,000 results (0.16 seconds).

Мне было интересно, нашел ли кто-нибудь что-нибудь для этого, я ничего не могу найти в документации.

<div id="cse" style="width: 100%;">Loading</div>
        <script src="http://www.google.com/jsapi" type="text/javascript"></script>
        <script type="text/javascript">
            google.load('search', '1', {language : 'en'});
            google.setOnLoadCallback(function() {
                var customSearchControl = new google.search.CustomSearchControl('GOOGLEIDGOESHERE');
                customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
                customSearchControl.setNoResultsString("No results found.")
                customSearchControl.draw('cse');   
            }, true);
</script>
<link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />

person ozatomic    schedule 19.07.2010    source источник


Ответы (1)


Вам нужно будет использовать SearchCompleteCallback и похоронить глубоко в обфусцированной библиотеке javascript, вы найдете свойство предполагаемого результата. Вот краткий пример, который выводит предупреждение с подсчетом. Вы можете настроить это в соответствии со своими потребностями, используя jquery, чтобы вставить некоторый html со счетом в любом формате, который вам нравится.

<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">

google.load('search', '1', {language : 'en'});
google.setOnLoadCallback(function() {
    var customSearchControl = new google.search.CustomSearchControl('GOOGLEIDGOESHERE');
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
    customSearchControl.setNoResultsString("No results  found.")
    customSearchControl.setSearchCompleteCallback(null, 
        function() { searchCompleteCallback(customSearchControl) });

    customSearchControl.draw('cse');   
}, true);


function searchCompleteCallback(customSearchControl) {

  alert(customSearchControl.e[0].g.cursor.estimatedResultCount);

}
</script>
person Kevin Lewis    schedule 21.07.2010
comment
вау, спасибо, что они были хорошо спрятаны. Какую документацию вы прочитали, чтобы выяснить это? - person ozatomic; 22.07.2010
comment
это, похоже, не работает сейчас, интересно, они снова спрятали это. - person SearchTools-Avi; 01.04.2011