lucene

1。今天研究了一下lucene,对于初学者来说,有一个地方以前还没怎么弄懂,可能不是很用心吧。今天又写点小的作业,用lucene来实现,对于以前遇到的这点问题进行了总结。

Lucene提供四个不同的字段类型,你可以从中做出选择:
n         Keyword—不被分析,但是被索引并逐字存储到索引中。这个类型适合于原始值需要保持原样的字段,如 URL、文件系统路径、日期、个人名称、社会安全号码、电话号码等等。例如,我们在Indexer(列表1.1)中把文件系统路径作为Keyword字段。
n         UnIndexed—不被分析也不被索引,但是它的值存储到索引中。这个类型适合于你需要和搜索结果一起显示的字段 (如URL或数据库主键),但是你从不直接搜索它的值。因为这种类型字段的原始值存储在索引中,这种类型不适合于存放比较巨大的值,如果索引大小是个问题的话。
n         UnStored—和 UnIndexed相反。这个字段类型被分析并索引但是不存储在索引中。它适合于索引大量的文本而不需要以原始形式重新获得它。例如网页的主体或任休其它类型的文本文档。
n         Text—被分析并索引。这就意味着这种类型的字段可以被搜索,但是要小心字段大小。如果要索引的数据是一个 String,它也被存储;但如果数据(如我们的Indexer例子)是来自一个Reader,它就不会被存储。这通常是混乱的来源,所以在使用Field.Text时要注意这个区别。

上面是lucene in Action中写道的,但是以前不是理解的很到位,今天弄明白了些。
1。对于keyword--我们在程序当中可以通过keyword进行查找,并可以通过get(“keyword”)来获取keyword的值
举例:

    IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Keyword("telephone","1234567"))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  
    打印的结果为:1234567
    就是
2。对于Unindexed,我们不能通过这个字段来索引,如果你这样做,那么肯定差不到任何值,但是通过其它的如keyword索引后,如Unindexed的字段设为city。你通过keyword查询后,可以通过调用get("city")的值来获取unIndexed的值。

   IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field. Unndexed ("telephone","1234567"))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  
    打印的结果为:null

3. Unstore 这个字段支持索引,但是不保存原始的信息。通过调用get方法获得不了这个字段的值。
    IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Keyword("telephone","1234567"))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  
    打印的结果为:null
   这个字段支持索引,我们可以通过这个字段进行索引,然后调用其他字段的值,但是不能通过其他字段索引调用这个字段的        get方法,那么还是不能够得到所塑要的值。

4. text
    分两种情况
    第一,以String为参数:
    IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Text("telephone","1234567"))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  

    输出结果为1234567
     这是以字符串卫参数,那么既可以支持索引又可以调用这个字段保存的原始信息。
   
    第二种情况
    以文件流为参数
   IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Text("telephone",new FileReader("hello.txt")))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  
    假设未见hello.txt中存在1234567这个字符串。
    输出结果为null
   
    这个是以文件流为参数,他不保存原始的文件信息,但是支持索引。所以这个方法和unstore用起来是一样的。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值