Lucene.NET查询+;突出显示

Lucene.NET查询+;突出显示,lucene,lucene.net,umbraco,Lucene,Lucene.net,Umbraco,我用的是Umbraco,遇到了Lucene。我找到了很多关于Lucene的代码和文章,但我仍然无法构建一个可接受的搜索 我有许多字段可供搜索,例如“nodeName”和“bodyText” 我需要的是: 当我搜索“men shoes”时,它应该只返回同时包含“men”和“shoes”的结果,还应该返回一个页面,其中nodeName只有“shoes”,bodyText只有“men” 当我搜索“鞋”时,我希望搜索结果包含“鞋”或“鞋”,但如果可能的话不要包含“锄头” 增强nodeName字段 获取

我用的是Umbraco,遇到了Lucene。我找到了很多关于Lucene的代码和文章,但我仍然无法构建一个可接受的搜索

我有许多字段可供搜索,例如“nodeName”和“bodyText”

我需要的是:

  • 当我搜索“men shoes”时,它应该只返回同时包含“men”和“shoes”的结果,还应该返回一个页面,其中nodeName只有“shoes”,bodyText只有“men”

  • 当我搜索“鞋”时,我希望搜索结果包含“鞋”或“鞋”,但如果可能的话不要包含“锄头”

  • 增强nodeName字段

  • 获取包含匹配单词的bodyText片段

  • 突出显示页面名称和正文片段上匹配的单词


有人这样做过吗?

这可能会让你开始

var manager = ExamineManager.Instance;
var searcher = manager.SearchProviderCollection["YOURSearcher"];
var query = manager.SearchProviderCollection["YOURSearcher"].CreateSearchCriteria(BooleanOperation.Or)
   .Field("nodeName", keywords.Boost(10))
   .Or().Field("nodeName", keywords.Fuzzy())
   .Or().Field("bodyContent", keywords.Boost(5))
   .Or().Field("otherField", keywords.Boost(3));
var results = searcher.Search(query.Compile());

Jonathan Lathigee的代码很有效,这是迄今为止我能找到的最像谷歌的代码


谢谢基兰!什么是关键词?这不是绳子,是吗?因为字符串没有Boost方法。它是字符串的扩展,所以必须使用Examine.LuceneEngine.SearchCriteria添加;当我搜索多个单词时,它不会返回任何结果是的,Lucene做了你需要的一切,还有更多。不过,既然你看起来是个新手,我建议你使用ApacheSolr(这是一个围绕Lucene构建的搜索服务器,提供了许多现成的功能,而不必修补内部。谢谢。我如何将其用于Umbraco。。。?