Lucene FieldCache的使用

版本:Lucene.Net-2.3.2
Lucene文档内容:
Index   ID
0       9
1       2
2       4
3       7
C#代码:
Lucene.Net.Search。IndexSearcher searcher = new Lucene.Net.Search。IndexSearcher("E://Lucene//Index");
Lucene.Net.Index.IndexReader reader = searcher.Reader;
var index1 = FieldCache_Fields.DEFAULT.GetStringIndex(reader, "ID");
var index2 = FieldCache_Fields.DEFAULT.GetStrings(reader, "ID");
string[] lookups = index1.Lookup;
int[] orders = index1.Order;
以下是对结果的分析说明:
lookups:
0      null
1      2
2      4
3      7
4      9
orders:
0      4
1      1
2      2
3      3
对比数据,找出它们之间的关系后就能明白Lucene的FieldCache是如何使用的。
Index   ID    Lookup Order
0       9     4
1       2     1
2       4     2
3       7     3
很明显,它们具有以上的关系,通过上面的关系可以从FieldCache中得到我们想要的内容,下面是简单的使用例子:
index2[hits.Id(i)]  拿出第i个搜索结果在FieldCache中相对应的内容
QueryParser myquery = new QueryParser("", analyzer);
Query query = myquery.Parse("ID:/"4/");
Hits hits = searcher.Search(query);
hits.Id(0) 的值为2
index2[hits.Id(0)] 的值为4
如果要拿出从小到大排序后的ID中的第3位的值,则按下面的方法拿:
lookups[3]
思考:拿出从小到大排序后的ID中的第3位的Index值该如何拿?
方案1:利用HashTable建立Index和Lookup Order的关系,用得到的值去HashTable中搜索。
希望大家能想到更好的方案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值