我是初学者&使用lucene.net开发我的第一个项目,即地址搜索实用程序lucene.net 3.0.3
使用标准分析器,查询解析器,(假设我有一个字段,存储和分析) - 样本数据:(每行都是一个包含单个字段的文档) (邮政编码和街道列连接)
搜索
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)
}
请帮助
我试图理解相似性和得分,但那里有太多的数学......
请帮忙......
答案 0 :(得分:0)
我最近自己遇到过这个问题,我认为这可能是由于通配符查询(至少在我的情况下)。这里有另一篇文章更好地解释了这个问题,并提供了一个可能的解决方案: