lucene.net,文件提升不起作用

时间:2014-05-14 08:26:26

标签: sorting indexing lucene.net

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

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

  • UB6 9AH Greenford Road
  • UB6 9AP Greenford Road
  • UB1 3EB Greenford Road
  • PR8 3JT Greenford Road
  • HA1 3QD Greenford Road
  • SM1 1JY Greenford Road的东西

搜索

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

//这是用于词组匹配

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

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

查询query = _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)
}

请帮助

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

请帮忙......

1 个答案:

答案 0 :(得分:0)

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

Lucene .net Boost not working when using * wildcard