2013-04-17 2 views
-2

여러 개의 Google 검색 검색 양식으로 페이지를 구현해야합니다. 우리는 CSE에 대한 구글에서 라이센스를 가지고 있고,이 상황이다 :필터링을 사용하여 Google 맞춤 검색을 구현하십시오.

  • 나는 간단한 검색을 수행하고 별도의 페이지에 결과를 표시 모든 페이지의 상단에 현재의 검색 양식을 가지고있다. 이 작동합니다.

  • 또 다른 두 개의 검색 양식을 보여줍니다 : 하나는 범주별로 기사를 필터링해야하고 다른 하나는 범주별로 기사를 필터링하고 결과를 특정 달로 제한해야합니다. 나는 이것을 위해 각 기사에 게시 날짜가 포함 된 메타 키를 추가했습니다.

그래도 설명서에 손실 비트를 입수했습니다 : 나는 페이지로

<gcse:searchbox-only resultsUrl="/[site]/stat/search/google_search_results.html"></gcse:searchbox-only></div> 

를 추가하면, 나는 결과를 필터링 할 수 없습니다. CustomSearchObject에 간섭하기 시작하면 다른 페이지에 결과를 표시하는 옵션이 표시되지 않습니다. 범주 기반 필터링의 경우

, 나는 결과 페이지의 URL에서 쿼리 인수에

more:pagemap:metatags-taxonomies:news 

추가 시도했습니다, 그리고 작업을 수행하지만 양식이를 주입하는 방법을 이해하지 않습니다 . 대한 이 날짜를 기준으로 제한하는 나는

&sort=more:pagemap:metatags-pubdate:r:YYYYMMDD:YYYYMMDD 

를 추가하는 시도하지만 그것이 작동되도록 할 수 없었다. XML 가져 오는 작업 :

http://www.google.com/search?q=intitle:[mysite]%20more:pagemap:metatags-taxonomies:News&sort=metatags-pubdate:r:20120401:20120830&cx=[mykey]client=google-csbe&output=xml 

올바른 결과를 반환합니다.

별로 도움이되지 않는 문서가 있습니까? 컨텍스트가없는 코드 스 니펫 만 있습니다. 나는 Filtering and sorting, Custom Search Element Control API, 그리고 당연히이 사이트를 점검했지만, 모든 조각들을 함께 놓을 수는 없습니다.

답변

0

내가 원했던 것을 구현할 수있었습니다. 검색 페이지에서, 나는 간단한 양식 (당신이 구글에서 브랜딩을 구현해야하는 경우이 행할하지 않을 수 있습니다) 내 결과 페이지를 가리킨 결과 페이지에서 내가 넣어 내장 다음

  • 합니다 (<head>을에) <body>에서

    <script src="http://www.google.com/jsapi"></script> 
    <script> 
    // This function extracts the query from the URL (if GET) or builds a search query. 
    // Code removed to simplify the example. 
    function buildQuery() { 
        return '<?php echo $_POST['q'];?> more:pagemap:metatags-taxonomias:News'); // injecting the taxonomy metatag filter 
    } 
    
    google.load('search', '1', {language : 'es'}); 
    google.setOnLoadCallback(function() { 
        var customSearchOptions = {}; 
        customSearchOptions[google.search.Search.RESTRICT_EXTENDED_ARGS] = {'sort':'metatags-pubdate:d,metatags-pubdate:r:<?php echo $_POST['startdate'];?>:<?php echo $_POST['enddate'];?>'}; // these come from the POST request, are processed earlier in the script. 
        var customSearchControl = new google.search.CustomSearchControl('XXXXXXXXXXX', customSearchOptions); // Put your own App key here. 
        customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); 
    
        var drawOptions = new google.search.DrawOptions(); 
        drawOptions.enableSearchResultsOnly(); // I don't want the search box here 
    
        customSearchControl.draw('cse-results-press', drawOptions); 
        var query = parseQuery(); 
        if (query) { 
         customSearchControl.execute(query); 
        } 
    }, true); 
    </script> 
    
  • :

    <div id="cse-results-press">Loading...</div> 
    
관련 문제