初めてlucene.netを使用しています。正常に動作しています。jcb geoキーワードでデータを検索すると、結果が表示されます。私の最初の結果はJCBキーワードに関連しており、次のいくつかのデータはGEOキーワードに関連しています。JCBがトップに立つ理由がわかりません。一方、最大の結果はGEOに関連しています。GEO関連のデータが一番上に来て、次にJCBが来るはずだと思います。
ここでは、検索に使用したコードを示しています。
string multiWordPhrase = "";
multiWordPhrase = txtSearch.Text.Trim().Replace("*", "").Replace("?", "").Replace("~", "");
IndexSearcher searcher = null;
List<SearchResult> list = new List<SearchResult>();
SearchResult oSr = null;
if (!string.IsNullOrEmpty(multiWordPhrase))
{
string[] fieldList = { "Title", "Description", "Url" };
List<BooleanClause.Occur> occurs = new List<BooleanClause.Occur>();
foreach (string field in fieldList)
{
occurs.Add(BooleanClause.Occur.SHOULD);
}
searcher = new IndexSearcher(_directory, false);
Query qry = MultiFieldQueryParser.Parse(Version.LUCENE_29, multiWordPhrase, fieldList, occurs.ToArray(), new StandardAnalyzer(Version.LUCENE_29));
TopDocs topDocs = searcher.Search(qry, null, ((PageIndex + 1) * PageSize), Sort.RELEVANCE);
ScoreDoc[] scoreDocs = topDocs.ScoreDocs;
int resultsCount = topDocs.TotalHits;
if (topDocs != null)
{
for (int i = (PageIndex * PageSize); i <= ((PageIndex + 1) * PageSize) && i < topDocs.ScoreDocs.Length; i++)
{
Document doc = searcher.Doc(topDocs.ScoreDocs[i].doc);
oSr = new SearchResult();
oSr.ID = doc.Get("ID");
oSr.Title = doc.Get("Title");
oSr.Description = doc.Get("Description");
//oSr.WordCount = AllExtension.WordCount(oSr.Description, WordExist(oSr.Title, multiWordPhrase));
string preview =
oSr.Description = AllExtension.HighlightKeywords(oSr.Description, multiWordPhrase); //sr.Description;
oSr.Url = doc.Get("Url");
list.Add(oSr);
}
}
lblMatchFound.Text = "Match Found " + resultsCount.ToString();
Pagination pagination = new Pagination();
pagination.BaseUrl = "/Search.aspx";
pagination.TotalRows = resultsCount;
pagination.CurPage = (PageIndex+1);
pagination.PerPage = PageSize;
pagination.PrevLink = "Prev";
pagination.NextLink = "Next";
pagination.SearchTerm = multiWordPhrase;
lblPager.Text = pagination.GetPageLinks(); ;
rptResult.DataSource = list;
rptResult.DataBind();
searcher.Close();
可能であれば、JCB関連のデータが上位に表示される理由について話し合い、検索結果をカスタマイズして、検索結果の単語が最大になるレコードが上位に表示されるようにする方法を教えてください。GEOのように。したがって、検索結果をカスタマイズする方法を提案してください。可能であれば、サンプルコードをいくつか用意してください。これは、lucene.netを初めて使用した結果、より適切に視覚化できるためです。どうもありがとう