lunr (elastic lunr0.9.5)
ウェブブラウザの検索エンジンとして使用しています。シンプルで非常に高速です。しかし、より多くのオブジェクトがある場合、正確に一致したオブジェクトを最初の位置にリストしていません。
Typescript での私の lunr 構成
this.lunrIndex = lunr(function () {
this.field('itemId');
this.field('name');
this.ref('itemId');
this.pipeline.remove(lunr.stemmer)
})
テキストを検索pan d ca
すると返されますが、
[{
"ref": "PANCOR DSR CAPSULE 10''S",
"score": 0.01674628244112235
},
{
"ref": "PANLID DSR CAPSULE 10''S",
"score": 0.01674628244112235
},
{
"ref": "PANSIO DSR CAPSULE 10''S",
"score": 0.01590146213665648
},
{
"ref": "PANLIFE DSR CAPSULE 10''S",
"score": 0.015507241586286287
},
{
"ref": "PANSEC DSR CAPSULE 10''S",
"score": 0.014526355502926632
},
{
"ref": "PAN D CAPSULE 10''S",
"score": 0.011554433713104873
}
]
Lunr のトリミングが上記の結果の理由の 1 つかもしれないのでlunr.trimmer
、パイプラインの実行から削除しても同じ結果が得られます。
上記の結果は、完全に一致する string( PAN D C
) の方がスコア ( ) が低いことを示しています0.011554433713104873
。ここで設定を見逃していますか?
正確に一致する文字列が他のものよりも最高のスコアを取得する必要があります.どうすればそれを達成できますか?