私は最近傍探索問題を解決しようとしている。 ここに私のコードです:、私は価値のヒットに見ると、私は私の知る限りでは1Luceneスコアリング:スコアと同じコサイン類似度を得る
、より多くの得点を参照してください
// Indexing
val analyzer = new StandardAnalyzer()
val directory = new RAMDirectory()
val config = new IndexWriterConfig(analyzer)
val iwriter = new IndexWriter(directory, config)
val queryField = "fieldname"
stringData.foreach { str =>
val doc = new Document()
doc.add(new TextField(queryField, str, Field.Store.YES))
iwriter.addDocument(doc)
}
iwriter.close()
// Searching
val ireader = DirectoryReader.open(directory)
val isearcher = new IndexSearcher(ireader)
val parser = new QueryParser(queryField, analyzer)
val query = parser.parse("Some text for testing")
val hits = isearcher.search(query, 10).scoreDocs
Luceneのスコア式は次のとおりです。
score(q,d) = coord-factor(q,d) · query-boost(q) · cosSim(q,d) · doc-len-norm(d) · doc-boost(d)
しかし、私は、coord-factor、doc-len-normなどの代わりに、クエリとドキュメントの間の範囲[0,1]のコサイン類似度のみを取得したいと考えています。 これを実現する方法はありますか?あなたはこの公式documentation通過した場合は
注意すべき点:その類似式はもはやデフォルトではありません。 6.0以降、Luceneはデフォルトで[BM25](https://en.wikipedia.org/wiki/Okapi_BM25)の実装を使用しています。古いデフォルトは引き続き使用できます。[ClassicSimilarity](http://lucene.apache.org/core/6_2_1/core/org/apache/lucene/search/similarities/ClassicSimilarity.html)を参照してください。 – femtoRgon