搜索“供应 服务器”可以搜索出这两个关键字的相关内容,但搜索“供应服务器”则搜索不出任何结果。用的是Lucene.Net 1.9,中文分词是用的下载的语言包。以下是测试代码://建索引
public void AddDocument(string DateAdded , string Description , string URL , string Title )
{
Document doc = new Document();
doc.Add(Field.Keyword("date", SplitCaller));
doc.Add(Field.Text("description", Description));
doc.Add(Field.Text("url", URL));            
doc.Add(Field.Text("title", Title));
doc.Add(Field.Keyword("sortdate", ReturnSortDate(DateTime.Parse(DateAdded)).ToString()));
writer.AddDocument(doc);
}//搜索public DataTable Search(string Query, string SortBy)
{
DataTable Results = new DataTable(); 
Results.Columns.Add("Title");
Results.Columns.Add("Description");
Results.Columns.Add("URL");
Results.Columns.Add("Published");
            
Query MyQuery  = QueryParser.Parse(Query, "description", new ChineseAnalyzer());
Sort  sort = new Sort(SortBy, true);
Hits hits = searcher.Search(MyQuery, sort);
int mTotalRecs = hits.Length();
int iCount = 0;
while (iCount < mTotalRecs)
{
Document doc = hits.Doc(iCount);
DataRow row = Results.NewRow();
row["url"] = doc.Get("url");
//row["Title"] = doc.Get("title");
//row["Description"] = doc.Get("description");
row["Title"] = this.Highlight(MyQuery,doc.Get("title"));
row["Description"] = this.Highlight(MyQuery,doc.Get("description"));
row["Published"] = doc.Get("date");
Results.Rows.Add(row);
iCount++;
}
searcher.Close();
return Results;
}