我一直在使用Lucene.net为业务目录应用程序开发搜索引擎。然而,当我搜索体育商店时,它返回包括体育商店在内的其他商店的结果,因为关键字shop与之匹配。那么,如何优先返回与关键字体育匹配的结果?
如果有人有这方面的解决方案,请在此分享。任何有用的例子或链接将不胜感激。
发布于 2018-07-20 17:08:41
如果你能粘贴一些代码给你一个更好的例子,我会非常感激的。
然而,从阅读你的问题,我认为你需要的是一个短语查询,以给体育商店一个更高的推动力。
这个查询的实现如下:
公共列表QueryToPhraseQuery(string 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
如果你想让我用你的代码给你一个例子,只要通过eit,我就可以修改它,以更好地适应你的考试。
https://stackoverflow.com/questions/49954292
复制相似问题