1

lucene.net でインデックス データを検索するコードを見つけていました。この URL からコードを取得しました http://www.eggheadcafe.com/tutorials/csharp/c69ef65f-e3c6-409e-ab97-168897c74f83/lucenenet-indexing-searching-entry-level-tutorial.aspx

ここに小さなサンプルコードがあります。

List<SearchResult> list = new List<SearchResult>();
SearchResult sr = null;
for (int i = 0; i < results; i++)
{
    sr = new SearchResult();
    Document doc = hits.Doc(i);
    float score = hits.Score(i);
    sr.Id = int.Parse(doc.Get("id"));
    sr.Score = score;
    sr.Description = doc.Get("Description");
    sr.Title = doc.Get("Title");
    sr.Link = doc.Get("Link");
    list.Add(sr);
}
//sort by score
list = list.OrderByDescending(x => x.Score).ToList();

hit.scoreとは何なのか、私にははっきりしないことが 1 つあります。 結果セットがhit.scoreで降順でソートされるのはなぜですか?

上記のコードでインデックスを検索すると、コードが機能しています。検索に「audi jcb」と入力すると、6 つの検索データが audi に表示され、1 つのデータが jcb に表示されますが、jcb のデータが一番上に表示されます....理由がわかりません。検索結果が最大になるデータを一番上に表示したい。それはコードビットを次のように変更することです

list = list.OrderBy(x => x.Score).ToList();

昇順で検索しましたが、希望どおりの結果が得られません....アウディのデータが一番上に来ていません。検索結果セットで最大の出現率を持つデータが一番上に来るので、コードに何を組み込むべきかを教えてください。よろしくお願いします。

4

1 に答える 1

0

スコアは、クエリに対するドキュメントの関連性を示す指標です。スコアが高いほど、ドキュメントが関連している可能性が高くなります。

データセットについて詳しく知らずに、jcb ドキュメントが audi ドキュメントよりも優れている理由を言うのは難しいです。ドキュメント内のキーワードの出現に関して他のすべてが同じである場合、jcb は audi よりも一般的ではない用語であると推測できます。まれな用語に偶然一致した場合、探しているものである可能性が高いため、頻度の低い用語はより高く重み付けされます。

2 つの異なる並べ替えを使用して同じ結果が得られるという問題は、私が考えることができる 2 つの可能性があります。1つは、あなたの側のある種の間違いです。2 つは、すべての結果のスコアが同じ場合です。

結果のスコアを確認できますか?

于 2012-07-07T20:25:37.267 に答える