lucene Filed(域)的相关操作

本文深入探讨了Lucene中的域索引选项、域存储选项、多域处理、加权操作、数字、日期和时间索引、域截取以及索引的锁机制等关键概念,为开发者提供全面的技术指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.域索引选项

     域索引选项(Filed.Index.*) 通过倒排索引来控制域文本是否可被搜索

2.域存储选项

    Field.Store.* 用来确定是否需要存储域的真实值,以便后续搜索时能恢复这个值

3.多值域的处理

    

	Document doc=new Document();
			for(String auther :authers){
				doc.add("auther",auther,Field.Store.YES,Field.Index.NOT_ANALYZED);
			}

4.对文档和域进行加权操作

   加权操作可以在索引期间完成,也可以在搜索期间完成。搜索期间的加权操作会更加动态化,因为每次搜索操作都可以根据不通的加权因子独立选择加权或者不加权,但这个策略也可能要稍微多消耗点CPUX效率。由于搜索期间的加权操作太动态化,该策略还可以将加权选项提供于控制,如用选择框询问用户“是否对最近修改过的文件进行加权。无论在什么时期进行加权都需要小心:过多的加权操作,特别是在用户界面没有提示的相应文档已经被加权操作的情况下。这可能会使用户搜索到很多用户不关心的东西(如百度的竞价排名),文档的加权操作:doc.setBoots(float).默认的加权因子是1.0,域加权操作也是如此!


5.索引数字,日期和时间

   doc.add(new NumericField("price").setDouble(20.99));

  doc.add(new NumericField("timestamp").setLongValue(new Date().getTIme()));

6.域截取

     lucene3.3 采用:

LimitTokenCountAnalyzer limitAna=new LimitTokenCountAnalyzer(new StandardAnalyzer(Version.LUCENE_33), 1000);

7.索引的锁机制

 

IndexWriter writer=getWriter();  //当前Writer对象获得了文件锁
		writer.setInfoStream(System.out);//索引的调试信息
		IndexWriter writer1=getWriter();  //这里将抛出LockObtainFailedException
		Document doc=new Document();
		doc.add(new Field("name","lzy",Field.Store.YES,Field.Index.ANALYZED));
		doc.add(new NumericField("age").setIntValue(23));
		writer.addDocument(doc);
		writer.optimize();
		writer.close();




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值