在 Lucene.NET 3.0 中搜索和索引的最佳方式是什么,以便结果按以下方式排序:
- 以完整查询文本(作为单个单词)开头的结果,例如“艾克姆酒吧”
- 以搜索词作为单词片段开头的结果,例如“巴特·辛普森”
- 包含查询文本完整单词的结果,例如“全国律师协会”
- 包含查询文本作为片段的结果,例如“联合调酒师公司”
示例:搜索Bar
排序结果:
- 阿克梅酒吧
- 月球酒吧
- 巴特·辛普森
- 全国律师协会
- 国际调酒师协会
最佳答案
Lucene 通常不支持基于字段内位置的搜索/评分。如果您为每个字段添加一些已知的字段开始分隔符或其他内容的前缀,则可以支持它。我真的不认为这是有意义的,从全文搜索的角度来看,其中文本字段内的位置不相关(即,如果我在文档中搜索 Bar,如果“Bart辛普森”在“国家律师协会”之前返回)
除此之外,简单的前缀搜索可以处理其他所有事情。因此,如果您只需添加词首标记,您就可以使用比原始术语更高的 boost 前缀查询来搜索修改后的术语,然后您应该准确地得到您所描述的内容。
关于lucene - 如何使用Lucene.NET 3.0进行startsWith然后Contains搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17010524/