2013-11-26 1 views
4

쿼리에 bq를 여러 개 사용해야합니다. 요청 처리기의 구성은 다음과 같습니다.Solr의 복수 부스트 쿼리

<requestHandler name="/search" class="solr.StandardRequestHandler"> 
<lst name="defaults"> 
    <str name="indent">false</str> 
    <str name="q"> 
    _query_:"{!edismax qf=$qfQuery mm=$mmQuery pf=$pfQuery bq=$boostQuery bq=$bQuery v=$mainQuery}" 
    </str> 
    <str name="qfQuery">Title^10.0 Detail CategoryTrail^4.0</str> 
    <str name="mmQuery">1</str> 
    <str name="pfQuery">Title Detail</str> 
    <str name="boostQuery"> 
    _query_:"{!edismax qf=$boostQueryQf mm=100% v=$mainQuery}"^100</str> 
    <str name="boostQueryQf">Title Detail</str> 
    <str name="bQuery">_query_:"{!edismax qf=$bQueryQf v=$mainQuery}"</str> 
    <str name="bQueryQf">CatTrail:Laptops/*^50.0 recip(ms(NOW,DateAdded),3.16e-11,1,1)^4.0 Availability:True^4.0 !ReviewCount:0^2.0</str> 
</lst> 
</requestHandler> 

슬프게도 bq는 결과에 영향을주지 않습니다. I 은 디버그 출력에서 ​​boost_queries을 참조하십시오.

또한 web에서 제안한대로 boostQuerybQuery에 빈 bq를 넣으려고했습니다. 하지만 그건 효과가 없었습니다. 누구든지이 처리기를 수정하거나 원하는 결과에 대한 대안을 제공 할 수 있습니까?
미리 감사드립니다.

+0

그냥 명확히하기 위해 - 적어도 부분적으로 적용된 debugQuery 출력의'parsedquery'에서 이러한 쿼리를 볼 수 있습니까? 아마 이미 처리 된 형태 일 것이므로 거기에서 정확히 일치하는 것을 찾지 마십시오. – rchukh

+0

@rchukh 아니요, 부분적으로조차 아닙니다. 다음은 parsedquery의 출력입니다. (+ DisjunctionMaxQuery (((CategoryTrail : batteries CategoryTrail : batteries)^4.0) | (세부 정보 : 배터리 세부 정보 : 배터리) | (제목 : 배터리 제목 : 배터리)^10.0)))) ((+())/no_coord))/no_coord' – ThePCWizard

답변

10

핸들러를 처음부터 다시 작업하십시오. 원하는 결과를 얻는 방법은 다음과 같습니다.

<requestHandler name="/search" class="solr.SearchHandler"> 
<lst name="defaults"> 
    <str name="indent">false</str>  
    <str name="echoParams">explicit</str> 
    <str name="defType">edismax</str> 
    <str name="qf"> 
     Title^10.0 Detail CategoryTrail^4.0 
    </str> 
    <str name="mm">1</str> 
    <str name="pf">Title^8.0 Detail</str> 
    <str name="bq">_val_:"{!edismax qf=$boostQueryQf mm=100% v=$q bq=}"^100</str> 
    <str name="boostQueryQf">Title^10.0 Detail</str> 
    <str name="bq">CatTrail:Laptops/*^50.0</str> 
    <str name="bq">ReviewCount:[1 TO *]^4.0</str> 
    <str name="bf">recip(ms(NOW,DateAdded),3.16e-11,1,1)^4.0</str> 
    <int name="rows">10</int> 
    <str name="df">allText</str> 
</lst> 
</requestHandler> 

나는 내 요구에 너무 구체적이지 않다고 생각합니다. 정확한 검색 키워드, 몇 가지 특정 카테고리, 리뷰가있는 제품 및 최신 결과를 사용하여 레코드를 향상하려는 전자 상거래 검색의 일반적인 요구 사항입니다. 나는 많은 연구를 통해 달성 한 위의 접근 방법을 추천 할 것이고 & 시도를 시도 할 것이다.