希望在我深入了解Lucene的自定义评分之前,能得到一个简单的答案。
我正在使用Lucene.NET v4.8.0-beta00005。
现在我正在使用StandardAnalyzer
进行索引,因此我想它不会对术语进行任何转换,只是删除了停用词。
搜索时,我使用相同的StandardAnalyzer
解析搜索文本,并为每个词条组成BooleanQuery
的OR FuzzyQuery
组合。
我们有一个要求,即完全匹配的得分为100。完全匹配是查询中的所有术语与索引中的所有术语完全匹配(以任何顺序)。
对于不完全匹配的得分,我们没有严格的要求,但得分必须低于100。
在我们现有的使用SQL Server全文搜索的实现中,我们有一个简单的自定义评分算法,该算法将搜索查询中的关键字与每个匹配项的关键字进行比较,并基于匹配的关键字中所有匹配关键字的百分比文档,并根据keword长度进行加权,即可计算出分数。 因此,当文档中的所有单词完全匹配(以任何顺序)与查询中的单词匹配时,匹配得分为100。
在Lucene.NET中,有BooleanQuery
的{{1}}达到类似行为的简便方法吗?