표준 EXTENDED2/SPH_RANK_PROXIMITY_BM25 방식을 사용하여 중간 크기의 제품 데이터베이스 (10mm 레코드, 2GB)에서 sphinx를 실행하고 있습니다. 속도가 빠르며, 관련성이 높습니다.일부/일부 일치를위한 스핑크스 튜닝
그러나 우리는 데이터베이스보다 복잡한 용어로 검색하는 최종 사용자의 불만이 늘어나고있어 결과가 없습니다.
예를 들어, 우리는 일반적인 검색 동안 "KitchenAid 장인 5 쿼트 믹서는"이을 "KitchenAid 장인 5 쿼트 갈색 믹서 스탠드"제품이있다. 우리가 가지고있는 물건을 돌려 줄 수있을 때 우리가 현재 세팅 한 결과는 일치하지 않습니다.
우리는 @weight 모드로 MATCH_ANY 정렬을 시도했지만, 스핑크스가 개별 단어로 다른 제품을 픽업 할 때 관련성이 완전히 옆으로 간다 [인형 및 보드 게임이 떠올랐다 고 생각한다].
근접 및 단어 밀도에서 순위를 매기면서 더 많은 공개 매칭을 허용하는 쿼리 매개 변수를 작성하는 모범 사례가 있습니까? 즉 쿼럼입니다 탐험
$cl = new SphinxClient();
$cl->SetServer('1.23.4', 456);
$cl->SetMaxQueryTime(15000);
$cl->SetMatchMode(SPH_MATCH_EXTENDED2);
$cl->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
$cl->SetArrayResult(true);
$cl->SetFilter('active', array(1));
$cl->SetSortMode(SPH_SORT_RELEVANCE, '@weight DESC, priced ASC');
$cl->SetLimits(intval($try), 1, 20, 500);
$cl->SetFieldWeights(array('ptitle' => 60, 'description' => 40));
$res = $cl->query($searchterm,"products");
쿼럼과 코드가 정확히 충분히 자유롭게 정리해야합니다. 또한이 작업을 수행하는 사람들에게 근접성이 실제로 도움이되므로 EXTENDED2 경기를 고수했습니다. 또한 컷오프가 제거되어 사용자의 입장에서 도움이되었을 수 있습니다. –
참고 : 제공된 코드에 약간의 버그가 있습니다. "첫 번째. $ 쿼럼 이후". 문제가있는 사람은 모두 비트를 제거해야합니다. –
Opps! 수정 된 답변을 수정했습니다. – barryhunter