lucene - 如何使用Lucene.NET 3.0进行startsWith然后Contains搜索?

标签 lucene lucene.net contains startswith

在 Lucene.NET 3.0 中搜索和索引的最佳方式是什么,以便结果按以下方式排序:

  1. 以完整查询文本(作为单个单词)开头的结果,例如“艾克姆酒吧”
  2. 以搜索词作为单词片段开头的结果,例如“巴特·辛普森”
  3. 包含查询文本完整单词的结果,例如“全国律师协会”
  4. 包含查询文本作为片段的结果,例如“联合调酒师公司”

示例:搜索Bar

排序结果:

  1. 阿克梅酒吧
  2. 月球酒吧
  3. 巴特·辛普森
  4. 全国律师协会
  5. 国际调酒师协会

最佳答案

Lucene 通常不支持基于字段内位置的搜索/评分。如果您为每个字段添加一些已知的字段开始分隔符或其他内容的前缀,则可以支持它。我真的不认为这是有意义的,从全文搜索的角度来看,其中文本字段内的位置不相关(即,如果我在文档中搜索 Bar,如果“Bart辛普森”在“国家律师协会”之前返回)

除此之外,简单的前缀搜索可以处理其他所有事情。因此,如果您只需添加词首标记,您就可以使用比原始术语更高的 boost 前缀查询来搜索修改后的术语,然后您应该准确地得到您所描述的内容。

关于lucene - 如何使用Lucene.NET 3.0进行startsWith然后Contains搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010524/

相关文章:

java - Lucene 中跨文档共享的标记和属性

java - 如何使用 lucene 进行词形还原和消除空法语单词

c# - 良好的 Lucene .NET 替代 ASP.NET 网站

search-engine - Lucene.NET 性能

Java List.contains(字段值等于 x 的对象)

java - 如何在 Lucene 6 中对数字字段进行排序

java - lucene 4.10.2 为索引中的所有术语计算 tf-idf

asp.net - Lucene.Net 是否管理访问同一索引的多个线程,一个索引而另一个正在搜索?

jquery - 根据标签包含的文本将 id 添加到标签

javascript - 检查 URL 是否包含文本和括号