sorting - lucene.net,文档提升不起作用

我是一名初学者,正在使用 lucene.net 开发我的第一个项目,即地址搜索实用程序 lucene.net 3.0.3

使用标准分析器、查询分析器(假设我有一个字段,也存储和分析) - 示例数据:(每一行都是一个包含单个字段的文档) (邮政编码和街道列串联)

  • UB6 9AH 格林福德路某处
  • UB6 9AP 格林福德路某处
  • UB1 3EB 格林福德路某处
  • PR8 3JT 格林福德路某处
  • HA1 3QD 格林福德路某处
  • SM1 1JY 某处格林福德路某处

搜索

StringBuilder customQuery = new StringBuilder();
customQuery.Append(_searchFieldName + ":\"" + searchTerm + "\"^" + (wordsCount));

//这是为了短语匹配

foreach (var word in words.Where(word => !string.IsNullOrEmpty(word)))
    {
        customQuery.Append(" +" + _searchFieldName + ":" + word + "*");
    }

//这是每个单词的前缀匹配

查询查询 = _parser.Parse(customQuery.ToString());

_searcher.Search(查询, 收集器);

以上所有(搜索)工作正常

问题

如果我搜索“Greenford road”, 我可能希望出现“SM1”的那一行(意味着我想根据邮政编码对结果进行优先排序)

我已经测试了 Query-Time-Boost,它工作正常

但有时我可能有一长串优先邮政编码(所以我不想遍历每个邮政编码并在查询时设置其优先级

我想要提高文档时间

但是无论我设置什么文档提升(在索引时),它都不会影响我的搜索结果

doc.Add(new Field(SearchFieldName, SearchField, Field.Store.YES, Field.Index.ANALYZED));
if (condition == true)
{
   doc.Boost = 2; // or 5 or 200 etc (nothing works)
}

请帮忙

我试图理解相似性和评分,但那里的数学太多了......

请帮忙....

最佳答案

我自己最近遇到了这个问题,我认为这可能是由于通配符查询引起的(至少在我的情况下是这样)。这里有另一篇文章更好地解释了这个问题,并提供了一个可能的解决方案:

Lucene .net Boost not working when using * wildcard

https://stackoverflow.com/questions/23649334/

相关文章:

ruby-on-rails - Rails - routes.rb - 滚动到根页面的 anchor

gcc - 在 GCC 的函数中禁用特定循环的自动矢量化

string - 如何在 Matlab 中为文本添加轮廓?

python - 在你的包的 setup.py 中使用 setuptools——你如何有条件地安装脚

ruby-on-rails - 在 Rails Controller 中跳过多个过滤器

unix - 2个unix文件怎么会有相同的inode,但是inode的引用计数是1?

python - 具有多个 worker 的 gunicorn 中的变量访问

hibernate - hql 在右外连接上获取

javascript - 为什么在 Chrome Dev-tools 中的 Resources ->

validation - 如何验证从应用程序到我的 Web 服务的请求的真实性