DefaultSimilarity.cs
上传用户:zhangkuixh
上传日期:2013-09-30
资源大小:5473k
文件大小:2k
源码类别:

搜索引擎

开发平台:

C#

  1. /*
  2.  * Copyright 2004 The Apache Software Foundation
  3.  * 
  4.  * Licensed under the Apache License, Version 2.0 (the "License");
  5.  * you may not use this file except in compliance with the License.
  6.  * You may obtain a copy of the License at
  7.  * 
  8.  * http://www.apache.org/licenses/LICENSE-2.0
  9.  * 
  10.  * Unless required by applicable law or agreed to in writing, software
  11.  * distributed under the License is distributed on an "AS IS" BASIS,
  12.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13.  * See the License for the specific language governing permissions and
  14.  * limitations under the License.
  15.  */
  16. using System;
  17. namespace Lucene.Net.Search
  18. {
  19. /// <summary>Expert: Default scoring implementation. </summary>
  20. [Serializable]
  21. public class DefaultSimilarity : Similarity
  22. {
  23. /// <summary>Implemented as <code>1/sqrt(numTerms)</code>. </summary>
  24. public override float LengthNorm(System.String fieldName, int numTerms)
  25. {
  26. return (float) (1.0 / System.Math.Sqrt(numTerms));
  27. }
  28. /// <summary>Implemented as <code>1/sqrt(sumOfSquaredWeights)</code>. </summary>
  29. public override float QueryNorm(float sumOfSquaredWeights)
  30. {
  31. return (float) (1.0 / System.Math.Sqrt(sumOfSquaredWeights));
  32. }
  33. /// <summary>Implemented as <code>sqrt(freq)</code>. </summary>
  34. public override float Tf(float freq)
  35. {
  36. return (float) System.Math.Sqrt(freq);
  37. }
  38. /// <summary>Implemented as <code>1 / (distance + 1)</code>. </summary>
  39. public override float SloppyFreq(int distance)
  40. {
  41. return 1.0f / (distance + 1);
  42. }
  43. /// <summary>Implemented as <code>log(numDocs/(docFreq+1)) + 1</code>. </summary>
  44. public override float Ldf(int docFreq, int numDocs)
  45. {
  46. return (float) (System.Math.Log(numDocs / (double) (docFreq + 1)) + 1.0);
  47. }
  48. /// <summary>Implemented as <code>overlap / maxOverlap</code>. </summary>
  49. public override float Coord(int overlap, int maxOverlap)
  50. {
  51. return overlap / (float) maxOverlap;
  52. }
  53. }
  54. }