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