【发布时间】:2014-07-02 04:40:11
【问题描述】:
我是一名初学者,正在使用 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 东西格林福德路
- 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(查询,收集器);
以上所有(搜索)工作正常
问题
如果我搜索“格林福德路”, 我可能希望出现“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)
}
请帮忙
我试图理解相似性和评分,但其中的数学太多了......
请帮忙....
【问题讨论】:
标签: sorting indexing lucene.net