首先,我已经看到the lucene doc它告诉我们不要产生比分为百分比:Solr的:成绩为百分比
人们经常要计算“百分比”从Lucene的分数 确定什么是“100%完美”比赛与“50%”比赛。这也是 也被称为“规范化得分”
不要这样做。
说真的。不要试图以这种方式考虑你的问题,这不是 会很好。
由于这些建议,我用另一种方式来解决我的问题。
但是,有几点lucene的论证,我不明白他们为什么在某些情况下有问题。
对于this post的情况下,我可以很容易理解为什么它是坏的:如果用户执行搜索,看到下面的结果:
- 产品A:5星
- 产品B:2星级
- ProductC:1星级
如果产品A是他第一次搜索后删除,用户下一次会来,他会感到惊讶,如果他看到了以下结果:
- 产品B:5星
- ProductC:3星级
所以,这个问题正是Lucene的文档中指出。
现在,让我们再举一个例子。
想象我们有使用“经典搜索”与拼音搜索结合的电子商务网站。语音搜索在这里是为了避免由于拼写错误而导致的最大数量的空结果。语音结果的得分相对于经典搜索的得分非常低。
在这种情况下,第一个想法是仅返回至少为最高分数的10%的结果。即使使用经典搜索,结果低于此阈值也不会被视为与我们相关。
如果我这样做,我没有问题上述帖子,因为如果一个文件被删除,这似乎合乎逻辑,如果旧的第二个产品成为第一个,用户将不会很惊讶(这是一样的行为,如果我把分数保持为浮点值)。此外,如果语音搜索的分数非常低,正如我们所期望的那样,我们将保持相同的行为以仅返回相关分数。
所以我的问题是:是它总是坏,Lucene的建议正常化成绩?我的例子是一个例外,还是对我的例子来说这是一个坏主意?
感谢您的回答和您的解释。我对你在第2节中关于用户所说的话有所了解并理解,但对于诸如方面之类的东西,我认为用户可能会迷路。 我们举一个例子,我使用低音提升语音。在法语中,我们有“议程”这个词,意思是“日记”。当用户搜索'议程'时,语音会给出像'savon'这样的结果,这意味着'soap',因为它包含术语'agents nettoyants'(这意味着'更清洁')。 所以,我的第一个方面之一将是'肥皂',尽管我的搜索是'日记'!?即使是最聪明的用户也会想知道会发生什么?! – alexf