Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting lucene.net,文档增强不起作用_Sorting_Indexing_Lucene.net - Fatal编程技术网

Sorting lucene.net,文档增强不起作用

Sorting lucene.net,文档增强不起作用,sorting,indexing,lucene.net,Sorting,Indexing,Lucene.net,我是一个初学者&用lucene.net开发我的第一个项目,即地址搜索工具lucene.net 3.0.3 使用标准分析器、查询解析器(假设我有一个字段,也存储和分析) -示例数据:(每一行都是带有单个字段的文档) (邮政编码和街道栏连接) UB6格林福德路9AH号 UB6格林福德路9号公寓 UB1格林福德路3B号 PR8格林福德路3JT号 格林福德路3号一楼 SM1 1JY某物格林福德路某物 搜索 StringBuilder customQuery = new StringBuilder()

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

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

  • UB6格林福德路9AH号
  • UB6格林福德路9号公寓
  • UB1格林福德路3B号
  • PR8格林福德路3JT号
  • 格林福德路3号一楼
  • 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 + "*");
    }
//这是每个单词的前缀匹配

Query Query=_parser.Parse(customQuery.ToString())

_searcher.Search(查询、收集器)

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

问题

如果我搜索“格林福德路”, 我可能希望出现包含“SM1”的行(表示我希望根据邮政编码得出优先顺序)

我已经测试了查询时间提升,效果很好

但有时我可能会有一个很长的优先邮政编码列表(所以我不想循环每个邮政编码,并在查询时设置其优先级)

我想要文件时间

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

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)
}
请帮忙

我试着理解相似性和评分,但数学太多了


请帮助……

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