두 가지 필드에서 두 가지 다른 것을 검색하는 방법은 무엇입니까?
문제
나는 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();
제휴하지 않습니다 StackOverflow