`
fangbiao23
  • 浏览: 41888 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用lucene 搜索时出现Parser错误,望解!!

阅读更多
出错的信息为:
建立搜索引擎
建立搜索域和分析器
Exception in thread "main" org.apache.lucene.queryParser.ParseException: Encountered "<EOF>" at line 1, column 0.
Was expecting one of:
    <NOT> ...
    "+" ...
    "-" ...
    "(" ...
    "*" ...
    <QUOTED> ...
    <TERM> ...
    <PREFIXTERM> ...
    <WILDTERM> ...
    "[" ...
    "{" ...
    <NUMBER> ...
   
at org.apache.lucene.queryParser.QueryParser.generateParseException(QueryParser.java:1485)
at org.apache.lucene.queryParser.QueryParser.jj_consume_token(QueryParser.java:1365)
at org.apache.lucene.queryParser.QueryParser.Clause(QueryParser.java:997)
at org.apache.lucene.queryParser.QueryParser.Query(QueryParser.java:907)
at fangLucene.TwoLucene.main(TwoLucene.java:86)

其lucene应用代码为:
package fangLucene;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;

import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.DriverManager;

public class TwoLucene {
	public static ResultSet rs = null;
	public static Statement statement = null;
	public static Connection con = null;
	public TwoLucene() throws Exception{
		
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		Directory directory = FSDirectory.getDirectory("D:\\luceneIndex");
		/** 建索 */
		IndexWriter indexWriter = new IndexWriter(directory,new SimpleAnalyzer(),true);
		indexWriter.setMaxFieldLength(250000);
		indexWriter.setMergeFactor(100); 
		
		System.out.println("开始取数据");
		Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
		System.out.println("已装载驱动");
		con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=lssDB","sa","1234");
		System.out.println("已连接上数据库");
		statement = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
		rs = statement.executeQuery("select databankid,TitleName,mostlycontent,lastDate from tabmdatabank");
		System.out.println("已读取数据集");
		String id,title,content,date;
		int j=0;
		while(rs.next()){
			Document doc = new Document();
			id = rs.getString(1);
			title =rs.getString(2);
			content = rs.getString(3);
			date = rs.getString(4);
			if(id == null)
				id = "";
			if(title == null)
				title = "";
			if(content == null )
				content = "";
			if(date == null)
				date = "";
			doc.add(new Field("dbid",id,Field.Store.YES,Field.Index.UN_TOKENIZED));
			doc.add(new Field("title",title,Field.Store.YES,Field.Index.TOKENIZED,Field.TermVector.YES));
			doc.add(new Field("content",content,Field.Store.NO,Field.Index.TOKENIZED,Field.TermVector.YES));
			doc.add(new Field("date",date,Field.Store.COMPRESS,Field.Index.TOKENIZED));
			indexWriter.addDocument(doc);
			
			System.out.println("已添加"+(++j)+"doc,其ID为:"+id);
		}
		indexWriter.optimize();
		rs.close();
		statement.close();
		con.close();
		System.out.println("结束取数据");
		indexWriter.close();
		System.out.println("已生成所有数据索引");
		
		//*********************************************************************
		/** 搜索 */
		IndexReader reader = IndexReader.open(directory);
		IndexSearcher indexSearcher = new IndexSearcher(reader);
		System.out.println("建立搜索引擎");
		QueryParser parser = new QueryParser("content",new SimpleAnalyzer());
		System.out.println("建立搜索域和分析器");
		Query query = parser.Query("劳动法律");
		System.out.println("提供搜索内容");
		Hits hits = indexSearcher.search(query);
		System.out.println("进行搜索并返回数据集");
		for(int i=0;i<hits.length();i++){
			Document doc = hits.doc(i);
				System.out.println(doc.get("title"));
		}
		System.out.println("取得查询数据标题");
		directory.close();
		indexSearcher.close();
		
		
		System.out.println("关闭搜索器");
		
	}
	
	public static void getCon() throws Exception{
		
	}
	public static void getStatement() throws Exception{
		
	}
	
}
分享到:
评论
5 楼 fangbiao23 2007-07-30  
找到啦!!原来是一个方法名写错啦!!真是晕
      Query query = parser.Query("劳动法律"); 
应为:
      Query query = parser.parser("劳动法律"); 
4 楼 fangbiao23 2007-07-30  
俺的内容都是html文件来的!!不知有没有影响!!
用不用自已再写个过滤呢?
3 楼 jolestar 2007-07-30  
见鬼.....
2 楼 fangbiao23 2007-07-30  
网上看了!!说是在搜索一些lucene的特殊字!
可俺明明就是搜索"劳动"二字,何来特殊符啊!!
1 楼 jolestar 2007-07-30  
要过滤一下搜索关键词,不能出现+,-,“,(,等特殊符号,因为那是搜索运算符。

相关推荐

    使用Lucene.net进行全文搜索

    本文将深入探讨如何使用Lucene.NET进行全文搜索,特别是针对多关键字匹配的场景。 首先,我们需要了解Lucene.NET的基本概念。Lucene是一个开源的文本搜索库,它的核心功能包括文档索引、搜索和排序。Lucene.NET是这...

    C#调用Lucene.net搜索txt文档和控制台输入

    本文将深入探讨如何使用C#语言结合Lucene.NET库来实现高效的文本搜索,同时也会展示如何在控制台环境中实现用户交互式搜索。 Lucene.NET是Apache Lucene项目的一个.NET版本,它是一个全文搜索引擎库,提供了强大的...

    lucene对doc.xlsx操作包

    同时,注意处理大文件时可能出现的内存问题,可以使用分块或流式处理方式。 总结,利用Apache Lucene、POI和Tika,我们可以有效地处理doc.xlsx文档,将其内容纳入Lucene索引,从而实现高效的全文搜索。在实际开发中...

    lucene搜索

    【Lucene 搜索技术详解】 Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发,广泛应用于各种 Java 应用程序中,包括网站、企业内部系统等。它提供了完整的搜索功能,包括索引、查询、排序以及高亮显示...

    传智播客luceneDemo

    传智播客的 luceneDemo 很可能是一个教学实例,通过创建、索引、查询等步骤,展示了如何使用 Lucene 实现一个简单的全文搜索引擎。这个 Demo 可能包括以下关键步骤: 1. **引入依赖**: 首先需要在项目中引入 Lucene...

    lucene-2.9.3.zip

    《Apache Lucene 2.9.3:搜索引擎技术的核心解析》 Apache Lucene是一个高性能、全文本搜索库,被广泛应用于各种需要强大搜索功能的应用中。这个“lucene-2.9.3.zip”文件包含了Lucene 2.9.3版本的所有源代码和资源...

    Lucene 2.4 入门例子

    以上就是使用Lucene 2.4构建基础搜索系统的基本流程。虽然示例简单,但涵盖了Lucene的核心概念和常用操作。随着深入学习,你可以掌握更高级的特性,如分面搜索、近实时搜索、复杂查询构造等,以适应更复杂的搜索需求...

    lucene基础学习笔记&源码

    在实践中,我们可以使用 Lucene 构建自己的搜索引擎,例如: 1. **网站全文搜索**:为网站内容建立索引,提供快速、精准的内部搜索功能。 2. **文档管理系统**:在大量文档中实现关键词搜索,便于信息检索。 3. *...

    Lucene4.10.3索引+查询

    **Lucene 4.10.3:构建与查询全文搜索引擎** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了高级文本分析、高效的索引和搜索功能,广泛用于构建复杂的全文搜索引擎。在这个场景中,我们...

    Lucene中文分词组件 JE-Analysis 1.4.0

    该组件免费安装使用传播,无限制商业应用,但暂不开源,也不提供任何保证 分词效率: 第一次分词需要1-2秒(读取词典),之后速度基本与Lucene自带分词持平 运行环境: Lucene 1.9+ 内存消耗: 30M+ ...

    lang-groovy-2.0.0-final.zip

    通过引入一些方便的抽象和默认行为,Lucene-Sugar降低了使用Lucene的门槛,使得开发者可以更快速地实现搜索功能。 在"lib-lucene-sugar-master"这个压缩包中,包含了Lucene-Sugar项目的源代码。通过对这些源码的...

    Lucence高亮显示的实现

    ### Lucene高亮显示实现详解 #### 一、引言 在搜索引擎开发中,为了提升用户体验,往往需要对搜索结果中的关键词进行高亮处理。这样不仅可以让用户一眼就能看到搜索结果与他们输入的关键词之间的关联性,同时也有...

    Doris实战笔记-be依赖包

    1. **版本兼容性**:确保Clucene的版本与Doris其他组件的版本兼容,避免出现版本不匹配导致的编译或运行错误。 2. **编译配置**:正确配置Clucene的编译选项,使其适应Doris的构建系统,如使用CMake或者Makefile进行...

    开源企业搜索引擎SOLR的应用教程

    3. **基于Compass+Lucene实现站内搜索**:适用于需要对数据库中的应用数据进行索引的场景,尤其是当需要替换传统SQL查询中的`LIKE '%expression%'`时。 最终,**Apache Solr**成为许多企业的首选,因为它不仅提供了...

    compass-reference.pdf

    Compass 是一个基于 Lucene 的 Java 搜索引擎框架,旨在提供一种简单、高效的方式来索引和搜索对象。它支持多种数据存储方式,并能够与 Spring 框架无缝集成。此文档为 Compass 2.1.0 版本的参考手册,详细介绍了...

    up_968752_SolrPhpClient_5wnx7.rar

    3. **查询索引**:Solr提供了一种强大的查询语言(称为Lucene Query Parser Syntax,LQPS),SolrPhpClient支持构建和发送这些查询。你可以指定字段、过滤器、排序和分页参数。 4. **更新索引**:你可以更新现有...

    apache-solr-ref-guide-6.6.html

    同时,Solr支持多种查询语法,包括标准查询解析器(Standard Query Parser)、Lucene查询语法(LQL)等,以及高级特性如布尔运算、短语匹配、模糊搜索等。 其次,SolrCloud是Solr的分布式部署模式,它基于ZooKeeper...

    nutch Eclipse

    在本文中,我们将深入探讨如何在 Linux 环境下使用 Eclipse 编译 Apache Nutch 1.0。Apache Nutch 是一个开源的网络爬虫框架,主要用于抓取和索引网页内容。Eclipse 是一个广泛使用的 Java 开发集成环境,它支持多种...

    跟益达学Solr5之索引网络上远程文件

    Solr是以Lucene为基础的搜索服务器,它提供了分布式、可扩展、高可用的全文检索功能。在Solr5中,我们可以通过配置和插件来实现对远程文件的索引,这对于处理网络上的大量非结构化数据尤为实用。 1. **配置远程文件...

    solr大数据检索

    Solr(发音为 "solar")是Apache Lucene项目的一个子项目,是一个开源的企业级搜索平台,专门设计用于处理大规模数据的全文检索。Solr以其高效、可扩展性和灵活性而闻名,它允许用户快速地对大量结构化和非结构化...

Global site tag (gtag.js) - Google Analytics