두 가지 필드에서 두 가지 다른 것을 검색하는 방법은 무엇입니까?

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

  •  10-12-2019
  •  | 
  •  

문제

나는 NICH 1.4와 SOLR 3.3.0을 사용하여 내 웹 사이트를 크롤링하고 색인화합니다.프론트 엔드에서 PHP API 일광 륨을 사용하여 SOLR에 쿼리합니다.기본적으로 검색하는 다음 필드가 있습니다.

content -> of type Text

title -> of type Text

ur-> of type url
.

나는 키워드를 검색하고 싶지만 동시에 총 결과 수가 횟수에 영향을주지 않고 일부 URL 패턴을 기반으로 일부 결과를 제외하고 싶습니다.(예를 들어 나는 항상 20 개의 결과를 보여주고 싶습니다.)

일광 욕실 에서이 일을하는 방법을 알고 있다면 정말 멋지 지 않을 것입니다.그러나 그렇지 않다면 이것이 SOLR에서 어떻게 할 수 있는지 궁금합니다.

나는 이미면에서 찾아 보았지만 머리를 감싸지 못했습니다.누군가가 세부 사항을 설명 할 수 있다면 정말로 그것을 고맙게 생각합니다.

도움이 되었습니까?

해결책

일광 욕실을 도와 드릴 수는 없지만 SOLR 쿼리는 상대적으로 간단해야합니다 :

q=+keyword -ur:exclude&rows=20
.

다른 팁

http : // {URL_ENDPOINT} /? wt= 0 & rows= 20 & start= 0 & q= content : contentText 또는 title : titletext 또는 ur : URL

  • wt= json 결과는 JSON 형식 에 있습니다.
  • ROWS= 20 개의 결과가 페이지 당 20 개 레코드로 페이지가 제작됩니다.
  • start= 0 페이지 결과 표시를 시작하려면
  • Q= 검색을 실행하는 쿼리 (입력도 빠져 나오는 것, 이전 및 그 후 모든 것을 찾으려면 인풋을 제대로 처리하십시오)

    컬을 사용하여 PHP에서.

    $solr_end_point = '';   //enter endpoint
    $search_term = '';
    $url_type = '';
    $start = 0;
    $ch = curl_init();
    $query = urlencode("content:*{$search_term}* OR title:*{$search_term}* OR ur:*{$url_type}*");
    curl_setopt($ch, CURLOPT_URL, "http://{$solr_end_point}/?wt=json&rows=30&start={$start}&q={$query}");
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 2);
    $result = curl_exec($ch);
    curl_close($ch);
    print_r($result);   //output result (json)
    $json_result = json_decode($result,true);
    print_r($json_result);  //output result as an array
    exit();
    
    .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top