我一直在使用Lucene.net为业务目录应用程序开发搜索引擎。然而,当我搜索体育用品店时,它返回其他商店的结果,包括体育用品店,因为关键词商店与之匹配。那么我如何确定它应该返回与关键字 sport
匹配的结果的优先顺序如果有人有此解决方案,请在这里分享。任何有用的示例或链接将不胜感激。
答案 0 :(得分:0)
如果您可以粘贴一些代码为您提供更好的示例,我将不胜感激。
但是,从阅读您的问题后,我认为您需要的是短语查询,以使Sports Shop的业务提升。
我对此查询的实现是这样的:
公共列表QueryToPhraseQuery(字符串pQuery){
QueryParsers.Classic.MultiFieldQueryParser oPhraseParser = new QueryParsers.Classic.MultiFieldQueryParser(Version, FieldArray, Analyzer, BoostDictionary);
List<PhraseQuery> lstPhraseQuery = new List<PhraseQuery>();
HashSet<Term> lstTerms = new HashSet<Term>();
oPhraseParser.Parse(pQuery).ExtractTerms(lstTerms);
foreach (var group in lstTerms.GroupBy(x => x.Field))
{
PhraseQuery oPhraseQuery = new PhraseQuery() { Boost = 10, Slop = 3 };
foreach (var oTerm in group.ToList())
{
oPhraseQuery.Add(oTerm);
if (oTerm.Field == Field.ImportantField)
oPhraseQuery.Boost = 30;
}
lstPhraseQuery.Add(oPhraseQuery);
}
return lstPhraseQuery;
}
这将在您的索引中搜索类似的内容,这些内容将完全匹配,并会以更高的相关度返回更好的结果
attributedescriptions:"something something"~3^10.0 attributemajor:"something something"~3^30.0 description:"something something"~3^10.0 edescription:"something something"~3^10.0
如果您想让我使用您的代码给您一个示例,只需过一会儿即可,我可以对其进行修改以更好地适合您的考试