2016-10-16 5 views
1

F3에서 이와 비슷한 대답을 어떻게 사용합니까?전체 텍스트 검색 및 점수 정렬 MongoDB

php mongodb full-text search and sort

편집 : 나는 제목과 설명에서 검색하고 있습니다. searchterm이 없으면 필드에 정렬됩니다 created_at. 인 경우 검색 : 그러나 관련성이 가장 높은 항목을 정렬하십시오.

편집 : 편집 : 페이지 매김 플러그인도 중요합니다.

+0

봅니다 S.I @ .. –

+0

을 조금 더 설명합니다. 제목과 설명을 찾고 있습니다. searchterm이 없다면'created_at' 필드를 정렬 할 것입니다. _ ** ** searchterm 인 경우 : 가장 관련성이 높은 항목을 정렬하십시오. – anned20

+0

"가장 관련성이 높은"을 정의하십시오. 채점은 어디서나 똑같은 것은 아닙니다. –

답변

3

을, 당신은 할 수 있습니다 score이라는 투영 된 필드를 정의하고이를 정렬에 사용하십시오.

예컨대 :

// MongoDB instance 
$db=new DB\Mongo('localhost:27017','mydb'); 

// Define a `score` field here 
$fields=['score'=>['$meta'=>'textScore']]; 

// Mapper instance 
$mapper=new DB\Mongo\Mapper($db,'mycollection',$fields); 

// Search text and sort by score 
$mapper->load(
    ['$text'=>['$search'=>'search text']], 
    ['order'=>['score'=>['$meta'=>'textScore']]] 
); 
+0

[Pagination] (https://github.com/ikkez/F3-Sugar/tree/master-v3/Pagination)에서 어떻게 사용합니까? – anned20

+0

음, [docs] (https://github.com/ikkez/F3-Sugar/tree/master-v3/Pagination#3-paginate-your-records)에서 인용 :'$ subset = $ mapper-> paginate ($ page-1, $ limit, $ filter, $ options);'. '$ '=' '$'=> '검색 텍스트']]'와'$ options = [ 'order'=> [ 'score'=> [ '$ meta'=> 'textScore ']]]'. – xfra35

+0

고마워요! 내가 집에 갈 때 시도 할 것이다. 보이는 유망! – anned20

1

사용 aggregation framework, 점수 필드를 투영하는 $project 운영자 파이프 라인 다음에 검색어와 일치하는 $match 파이프 라인 작업을 수행하여 대부분의 관련 텍스트 점수를 가지고있는 문서를 얻기 위해 다음 대부분의 관련 항목을 반환하려면 다른 $order 파이프 라인 작업을 수행하십시오. 은 "textScore"metadata 이후의 전망, 종류 및 조건 $text 동작을 포함하는 $match 스테이지로 볼 수 있습니다 : 프레임 워크의 edge 버전을 사용

db.collection.aggregate([ 
    { 
     "$match": { 
       "$text": { 
        "$search": "search text" 
       } 
     } 
    }, 
    { 
     "$project": { 
       "_id": 0, 
       "score": { 
        "$meta": "textScore" 
       } 
      } 
    }, 
    { 
      "$orderby": { 
       "score" : -1 
       } 
    } 
]) 
+0

답변 해 주셔서 감사합니다! 나는 이것을 이렇게 사용하는 방법을 안다. 내 질문은 : 어떻게 이것을 Fat Free Framework에서 사용합니까? 도움을 주셔서 감사합니다. – anned20

관련 문제