python 如何使用pylucene创建CustomSimilarity类?

z9gpfhce  于 2024-01-05  发布在  Python
关注(0)|答案(2)|浏览(148)

在Java中,通过扩展SimilarityBase类并覆盖评分方法来创建自定义相似性评分函数。然而,我无法找到使用pylucene进行相同操作的方法。
我已经尝试过像在Java中一样扩展SimilarityBase类。

  1. class CustomSimilarity(SimilarityBase):
  2. def __init__(self):
  3. SimilarityBase.__init__(self)
  4. def score(self,stats,termfreq,doclen):
  5. return termfreq
  6. def toString(self):
  7. return "Term Frequency Scoring"

字符串
但是,在将CustomSimilairity类分配给IndexSearcher的过程中出现错误

  1. lucene.JavaError: <super: <class 'JavaError'>, <JavaError object>>
  2. Java stacktrace:
  3. java.lang.InstantiationException:

iyfamqjs

iyfamqjs1#

我找到了一个解决办法。但我不明白为什么这是正确的。

  1. class CustomSimilarity(SimilarityBase):
  2. def __init__(self):
  3. #self.super = SimilarityBase()
  4. pass
  5. def score(self,stats,termfreq,doclen):
  6. return termfreq
  7. def toString(self):
  8. return "Term Frequency Scoring"

字符串

r1zk6ea1

r1zk6ea12#

解决这个问题的方法是从PythonClassicSimilarity继承,因为需要发生一些神奇的事情(参见here),所以代码应该是:

  1. from org.apache.pylucene.search.similarities import PythonSimilarity
  2. class CustomSimilarity(PythonSimilarity):
  3. def score(self,stats,termfreq,doclen):
  4. return termfreq
  5. def toString(self):
  6. return "Term Frequency Scoring"

字符串

相关问题