- 浏览: 388194 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (215)
- ubuntu (27)
- 虚拟机 (13)
- 数据库 (29)
- JAVA (40)
- 搜索 (23)
- 开发工具 (2)
- 产品 (2)
- 工具 (1)
- 应用服务器 (5)
- linux (17)
- log (1)
- 多线程 (3)
- 异常 (1)
- shell (6)
- 12306 ;互联网 (1)
- 持续集成&Hudson (4)
- js (1)
- JAVA OR-Map (1)
- 漏洞 (1)
- svn (1)
- MAVEN (3)
- 架构 (1)
- windows (1)
- json (1)
- web (3)
- jenkins (2)
- iptables (2)
- JAVA ssh (0)
- 项目管理 (1)
- tomcat (1)
- 安全 (1)
- 数据库 mysql (1)
- 性能 (1)
最新评论
-
sbwfgihc:
怎么用的啊,
<转>mysql 树查询语句 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
songsove:
请问您qq多少
solr 对拼音搜索和拼音首字母搜索的支持 -
panghaoyu:
实现一个智能提示功能需要ajax、数据库、jsp/php、算法 ...
<转>Solr Suggest实现搜索智能提示 -
norain1988:
这样就可以实现相关搜索了吗
solr 百度相关搜索类似功能的实现
利用TermDocs也是可以得到一些有用的结果。。。代码如下
[java] view plaincopy
- package com.fpi.lucene.studying.myfirstlucene;
- import java.io.File;
- import java.io.IOException;
- import org.apache.lucene.LucenePackage;
- import org.apache.lucene.analysis.Analyzer;
- import org.apache.lucene.analysis.standard.StandardAnalyzer;
- import org.apache.lucene.document.Document;
- import org.apache.lucene.index.CorruptIndexException;
- import org.apache.lucene.index.IndexFileNameFilter;
- import org.apache.lucene.index.IndexReader;
- import org.apache.lucene.index.Term;
- import org.apache.lucene.index.TermDocs;
- import org.apache.lucene.queryParser.ParseException;
- import org.apache.lucene.queryParser.QueryParser;
- import org.apache.lucene.search.IndexSearcher;
- import org.apache.lucene.search.Query;
- import org.apache.lucene.search.ScoreDoc;
- import org.apache.lucene.search.TopScoreDocCollector;
- import org.apache.lucene.store.FSDirectory;
- import org.apache.lucene.util.Version;
- public class Searcher {
- // 关键字,要搜查的对象
- public static String key_word = "about";
- public static String field = "contents";
- public static void search() throws CorruptIndexException, IOException, ParseException{
- //打开索引所在地
- IndexSearcher sr = new IndexSearcher(FSDirectory.open(new File("d://test//myindex")),true);
- //词法分析器
- Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
- //解析器
- QueryParser parser = new QueryParser(Version.LUCENE_30,field,analyzer);
- //根据关键字查询
- Query query = parser.parse(key_word);
- TopScoreDocCollector collector = TopScoreDocCollector.create(100, false);
- //将所搜寻出来的结果以特定的形式放在collector中
- sr.search(query, collector);
- /**
- * topDocs():Returns the top docs that were collected by this collector.
- * 返回的是由这个collector收集的顶级文档。
- * .scoreDocs():The top hits for the query.
- * 用于查询的最高命中。
- */
- ScoreDoc[] hits = collector.topDocs().scoreDocs;
- System.out.println("搜索到符合标准的文档数目:"+hits.length);
- //检索,根据关键字在contents这个field里边找,本节关注点。
- TermDocs temDocs = sr.getIndexReader().termDocs(new Term("contents",key_word));
- while(temDocs.next()){
- System.out.println("在文件"+sr.getIndexReader().document(temDocs.doc())+"中," +
- "关键字出现了"+temDocs.freq()+"次。");
- }
- System.out.println("-----------------我是无敌的分割线----------------");
- for (int i = 0; i < hits.length; i++) {
- Document doc = sr.doc(hits[i].doc); //依此遍历符合标准的文档
- System.out.println(doc.getField("filename")+" ---- "+hits[i].toString()+" ---- ");
- }
- System.out.println("you have " + collector.getTotalHits() +
- " file matched query '" + key_word + "':");
- System.out.println("Lucene's position is in:"+LucenePackage.get());
- }
- public static void main(String[] args) {
- try {
- search();
- } catch (CorruptIndexException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
要说明的是,如果将检索到的结果放在TopScoreDocCollector中 那么他里边的顺序是按照相关度得分从大到小排序的,也即是说最大的排最前。而利用TermDocs:
[java] view plaincopy
- TermDocs temDocs = sr.getIndexReader().termDocs(new Term("contents",key_word));
- while(temDocs.next()){
- System.out.println("在文件"+sr.getIndexReader().document(temDocs.doc())+"中," +
- "关键字出现了"+temDocs.freq()+"次。");
- }
他这个“容器”里边的数据是无序的。
还有说明Term的初始化,有2个,一般常用的是new Term(field名称,关键字);
如果将 TermDocs temDocs = sr.getIndexReader().termDocs(new Term("contents",key_word));
错误的写成 TermDocs temDocs = sr.getIndexReader().termDocs();
也就是无参初始化,则得到的结果就是每个文件他的freq都会取到值是1.
原链:http://blog.csdn.net/sustbeckham/article/details/5809181
发表评论
-
百度GOOGLE的用户鼠标行为分析<转>
2012-08-29 09:37 1520转自:http://www.20ju.com/conte ... -
lucene 一些性能调优建议
2012-08-22 16:12 5569lucene 排序 Lucene默认按照相关度 ... -
<转>庖丁解牛分词之自定义词库[自定义词典]
2012-07-03 10:21 928原链接: http://hi.baidu.com/stone_ ... -
庖丁(Paoding)分词的词典原理解析
2012-07-03 10:14 3670Paoding分词过程中词典 ... -
solr 百度相关搜索类似功能的实现
2012-06-27 16:26 5786这个功能的实现有几种不同的思路。 大概半个月前,我在网 ... -
solr 索引库同步数据库
2012-06-27 14:01 5663对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输 ... -
solr 对拼音搜索和拼音首字母搜索的支持
2012-06-27 13:52 9101对于拼音和拼音首字母的支持,当你在搜商品的时候,如果想输 ... -
<转>Solr Suggest实现搜索智能提示
2012-06-27 10:15 13958智能提示简介 搜索的智能提示目前是各大搜索的标配应用, ... -
IK的整个分词处理过程
2012-06-26 14:25 11588IK的整个分词处理过 ... -
Solr的检索运算符
2012-06-21 14:47 4246“:” 指定字段查指定值,如返回所有值*:*² “?” 表示 ... -
Solr 学习(5) —- Solr查询语法和参数
2012-06-21 14:25 11592、查询语法 solr的一些查询语法 ... -
Apache Solr schema.xml及solrconfig.xml文件中文注解
2012-06-21 10:55 1205一、字段配置(schema)schema.xml位于so ... -
<转>Lucene里经常被聊到的几个话题
2012-06-07 21:54 1273lvpei.cnblogs.com.自己总结的Lucen ... -
<转>浅谈文档索引普遍原理<笔记>
2012-06-07 21:49 1021--lvpei.cnblogs.com 搜索引擎普遍采 ... -
Lucene中Field类很重要
2012-06-07 21:46 8258org.apache.lucene.demo.Index ... -
Lucene架构简单分析
2012-06-06 15:30 1661Lucene简介Lucene 是一个基 ... -
<转>lucene3.0中Field.Index, Field.Store,Field.TermVector详解
2012-06-06 14:49 920lucene在doc.add(new Field(&quo ... -
<转>用于Lucene的各中文分词比较
2012-06-05 09:58 5610对几种中文分析器,从分词准确性和效率两方面进行比较。分析器依次 ... -
Lucene3参考资料
2012-06-05 09:46 1019http://wenku.baidu.com/view/706 ... -
lucene索引word/pdf/html/txt文件及检索(搜索引擎)
2012-06-04 14:59 986因为lucene索引的时候是 ...
相关推荐
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
lucene 3.0 API中文帮助,学习的人懂得的
Java搜索引擎的研究与实现(含文档+源码)<br>目录 1<br>摘要 3<br>第一章 引言 4<br>第二章 搜索引擎的结构 5<br>2.1系统概述 5<br>2.2搜索引擎的构成 5<br>2.2.1网络机器人 5<br>2.2.2索引与搜索 5<br>2.2.3 Web...
4. **Lucene3.0查询工具和类**: - **IndexSearcher**:是主要的检索工具,提供了所有搜索操作的接口,通常使用Directory初始化。 - **Query**:抽象类,用于表示查询需求,通过子类实现不同类型的查询。 - **...
《Lucene 3.0 原理与代码分析完整版》是一本深入解析Lucene 3.0搜索引擎库的专业书籍。Lucene是Apache软件基金会的开源项目,它为Java开发者提供了一个高性能、全文检索的工具包,广泛应用于各种信息检索系统。这...
lucene3.0 中文分词器, 庖丁解牛
这里的"lucene3.0核心jar包"是 Lucene 的一个重要版本,发布于2009年,为当时的开发人员提供了构建全文搜索引擎的基础框架。 在 Lucene 3.0 中,以下几个关键知识点值得关注: 1. **索引结构**:Lucene 使用倒排...
<lucene-version>5.3.1</lucene-version> </properties> <dependencies> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>${lucene-version}</version> ...
<br>系统设计<br> 1 jive设计思路 <br> 2 jive的工作内幕 <br> 3 Jive源代码研究 <br> 4 Jive中的设计模式 <br> 5 jive学习笔记 <br><br><br> <br>设计模式<br> 1 大道至简-Java之23种模式一点就通 <br> 2 设计模式...
**Lucene 3.0 全文信息检索** Lucene 是一个由Apache软件基金会4 Jakarta项目组开发的开源全文检索引擎工具包。自1999年发布以来,Lucene 已经发展成为Java世界中最为广泛使用的全文检索库,为开发者提供了构建高...
这里我们主要聚焦于`lucene3.0`版本,该版本在当时是Lucene的一个重要里程碑,引入了许多改进和新特性。 1. **索引构建**: 在Lucene3.0中,索引是数据检索的基础。它通过将文本数据转换为倒排索引来实现快速查询...
在 Lucene 3.0 版本中,虽然已经相对较旧,但仍然包含了基本的搜索引擎功能,适用于简单或特定场景的搜索需求。在这个实例中,我们将探讨如何在 JDK 1.5 和 Lucene 3.0 的环境下构建和运行一个简单的搜索引擎。 ...
《深入剖析Lucene3.0:庖丁解牛与索引搜索实践》 在IT行业中,搜索引擎技术扮演着至关重要的角色,而Lucene作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene3.0版本,结合“庖丁解...
lucene3.0-highlighter.jar lucene3.0的高亮jar包,从lucene3.0源码中导出来的
在本文中,我们将深入探讨Lucene 3.0版本,了解其核心概念、功能特性,并通过实例来展示如何使用这个强大的工具。 ### 1. Lucene 3.0核心概念 #### 1.1 文档与字段 在Lucene中,数据是以文档(Document)的形式...
**Lucene 3.0 全文检索入门实例** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级、灵活的搜索功能框架,允许开发者在自己的应用中轻松地集成全文检索功能。本文将重点介绍如何使用 ...
lucene升级了,分词也得升级哦! 在使用lucene3与paoding集成的时候可能会出现以下错误: Exception in thread "main" java.lang.AbstractMethodError: org.apache.lucene.analysis.TokenStream.incrementToken()Z ...