2017-02-01 15 views
0

私はsolrクエリを使用してドキュメントからキーワードを検索しています。私は正確なフレーズが一番上に来るようにしたいが、同じフレーズがドキュメント内で何度も繰り返される場合は、同じフレーズを複数のフレーズが同じフレーズであるキーワードが高いスコアを得るためにカウントされる必要がある。solr exact search重複するフレーズを無視する

私は "php developer"を検索していますが、2つの結果が見つかりましたが、どちらも同じスコアを持っています。

私たちの必要に応じて、両方とも同じスコアを持つ必要があります。私は文書で見つかったリピートフレーズを無視したい。

あなたはDefaultSimilarityを拡張し、独自のカスタム類似のクラスを作成することができます "のjob_title、key_skills、key_skills_admin、job_detail"

 <copyField source="job_title" dest="job_search"/> 
     <copyField source="key_skills" dest="job_search"/> 
     <copyField source="key_skills_admin" dest="job_search"/> 
     <copyField source="job_detail" dest="job_search"/> 

     { 
     "responseHeader":{ 
     "status":0, 
     "QTime":7, 
     "params":{ 
      "lowercaseOperators":"true", 
      "mm":"2", 
      "debugQuery":"true", 
      "fl":"job_slno,job_title,job_detail,key_skills,key_skills_admin,display_date,score", 
      "indent":"true", 
      "q":"\"php developer\"", 
      "stopwords":"true", 
      "wt":"json", 
      "defType":"edismax"}}, 
     "response":{"numFound":110,"start":0,"maxScore":2.518858,"docs":[ 
      { 
      "job_slno":"243681", 
      "job_title":"php developer", 
      "job_detail":"sdf sdfs df", 
      "key_skills":"php developer", 
      "key_skills_admin":"php developer", 
      "display_date":"2016-11-11T00:00:00Z", 
      "score":2.518858}, 
      { 
      "job_slno":"243340", 
      "job_title":"sfsdfs", 
      "job_detail":"dfsdfsdfsd", 
      "key_skills":"PHP Developer", 
      "key_skills_admin":"PHP Developer", 
      "display_date":"2016-11-13T00:00:00Z", 
      "score":2.399412}, 
      ] 
     } 

答えて

0

の "job_search" フィールドの組み合わせを探し、また、提出されたスキーマを確認してください。 そして、ユースケースごとにtfメソッドをオーバーライドします。

public class CustomSimilarity extends DefaultSimilarity { 

     //multiple occurrences of terms doesn't affect its relevancy 
     @Override 
     public float tf(float freq) { 
       return 1; 
     } 
} 
0

限り、あなたは、トークンの位置に依存しないよと、you can set omitTermFreqAndPositions to true for the field(あなたはフレーズブーストまたは類似した何かをdoignていないように)。

これは、用語の頻度に関する情報を格納するのを避け、用語の頻度が唯一の異なる要素である限り、本質的にスコアを同一にします。

関連する問題