使用庖丁能够分词并且建立索引,但是不能搜索中文,只能搜索英文和数字,例如:标题为《数学最后冲刺135分》,搜数学没有结果,搜135就能搜索出来。能添加数据库,没有乱码,统一utf-8
下面是被搜索的实体:
package com.compass.test;
import org.compass.annotations.Index;
import org.compass.annotations.Searchable;
import org.compass.annotations.SearchableId;
import org.compass.annotations.SearchableProperty;
@Searchable
public class Book {
@SearchableId
private String id;
@SearchableProperty(analyzer="PaodingAnalyzer", index=Index.TOKENIZED)
private String title;
@SearchableProperty(name="author", index=Index.NOT_ANALYZED)
private String author;
@SearchableProperty(name="price", index=Index.NOT_ANALYZED)
private float price;
public Book(){}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
}
这是测试搜索类:
package com.compass.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.compass.core.Compass;
import org.compass.core.CompassSession;
import org.compass.core.config.CompassConfiguration;
import org.compass.core.support.search.CompassSearchCommand;
import org.compass.core.support.search.CompassSearchHelper;
import org.compass.core.support.search.CompassSearchResults;
import org.compass.gps.CompassGpsDevice;
import org.compass.gps.device.hibernate.HibernateGpsDevice;
import org.compass.gps.impl.SingleCompassGps;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class CompassSimpleDemo {
public static void main(String[] args) {
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
Compass compass = new CompassConfiguration().configure().addClass(
Book.class).buildCompass();
SingleCompassGps compassGps = new SingleCompassGps(compass);
CompassGpsDevice compassGpsDevice = new HibernateGpsDevice("hibernate",
sessionFactory);
compassGps.addGpsDevice(compassGpsDevice);
compassGps.start();
CompassSession compassSession = compass.openSession();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String query = "";
try {
query = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
CompassSearchHelper searchHelper = new CompassSearchHelper(compass, 10);
CompassSearchResults results = searchHelper.search(
new CompassSearchCommand(query, 0));
System.out.println();
System.out.println("==分页信息==");
System.out.println("结果总数--->" + results.getTotalHits());
System.out.println("页数--->" + results.getPages().length);
System.out.println("当前分页结果数--->" + results.getHits().length);
System.out.println("搜索耗时--->" + results.getSearchTime()+"ms");
System.out.println();
System.out.println("==商品记录信息==");
for(int i=0; i<results.getTotalHits(); i++) {
System.out.println("id--->" + ((Book)results.getHits()[i].getData()).getId());
System.out.println("标题--->" + ((Book)results.getHits()[i].getData()).getTitle());
System.out.println("作者--->" + ((Book)results.getHits()[i].getData()).getAuthor());
System.out.println("价格--->" + ((Book)results.getHits()[i].getData()).getPrice());
System.out.println("=====================================");
}
compassSession.close();
compass.close();
}
}
大家帮忙看看,网上是在找不到解答。
分享到:
- 2009-12-01 10:07
- 浏览 559
- 评论(0)
- 论坛回复 / 浏览 (0 / 1222)
- 查看更多
相关推荐
标题中的“Lucene+compass+spring+jdbc+庖丁的一个例子”揭示了这是一个关于整合多个技术来构建一个搜索系统的示例。在这个系统中,我们有以下几个关键组件: 1. **Lucene**: Apache Lucene 是一个高性能、全文本...
中文分词器是处理中文文本的关键组件,因为中文不像英文那样有明显的空格分隔单词。"中文分词器"在这里指的可能是 "je-analysis-1.5.1.jar",这是一个专门针对中文的分析工具,用于将中文文本分解成有意义的词汇(词...
《Compass+Lucene:构建高效全文搜索引擎》 在信息技术高速发展的今天,数据量的爆炸式增长使得传统的数据库查询方式面临着挑战。此时,全文搜索引擎以其快速、高效的特性,成为了处理大量非结构化文本数据的首选...
compass+ibatis+spring+struts2整合开发compass+ibatis+spring+struts2整合开发compass+ibatis+spring+struts2整合开发compass+ibatis+spring+struts2整合开发
Compass和Lucene是两个非常重要的Java开源搜索引擎库,它们在处理海量数据的搜索和索引方面发挥着关键作用。让我们深入探讨这两个组件的核心概念、功能以及它们如何协同工作。 **Compass** 是一个基于Apache Lucene...
标题中的“compass+ssh2集成 hibernategps问题”指的是在Java开发中,开发者尝试将Compass搜索引擎库与SSH2(Spring、Struts和Hibernate)框架整合时遇到的问题,特别是与Hibernate的GPS(Global Persistent ...
Compass 和 Lucene 是两个在 Java 开发环境中广泛使用的全文搜索引擎工具。它们可以帮助开发者构建高效、强大的文本搜索功能。本文将详细介绍如何使用 Compass 和 Lucene 实现一个简单的全文检索功能。 首先,...
【Sass + Compass + Susy:CSS 设计师的实战指南】 Sass 是一个 CSS 预处理器,它扩展了 CSS 的功能,让编写样式表变得更加高效和模块化。通过使用变量、嵌套规则、混合(mixins)、函数等特性,Sass 能够帮助...
标题提及的"COMPASS+spring构建自己的搜索引擎"是关于如何使用Compass搜索引擎框架与Spring框架集成,构建一个自定义的全文搜索引擎。Compass是一个开源的搜索引擎库,它提供了与ORM框架(如Hibernate)的集成,使得...
【SSH+Compass搜索引擎简单项目】是一个基于Struts2(S),Hibernate(H)和Spring(S)的Java Web应用程序,结合了Compass搜索引擎库,用于实现对数据库中两个表的高效检索功能。这个项目旨在提供一个清晰易懂的...
《深入探索Lucene+Compass技术与Ajax应用》 在当今的互联网开发中,数据检索和实时交互性已经成为不可或缺的功能。Lucene作为一个强大的全文搜索引擎库,为开发者提供了高效的文本搜索能力;Compass作为Lucene的一...
`compass学习笔记.doc`是一份关于Compass的学习文档,可能包含了使用Compass的基本步骤,常见问题解答,以及一些最佳实践。这份文档对于理解Compass的工作原理和实际应用是非常有价值的。 `lucene总结.chm`和`...
解决这个问题的方法有以下几种: 1. 安装更新:确保操作系统和所有系统更新都已安装,尤其是针对VC++运行时的更新。 2. 安装VC++运行时库:可以从Microsoft官方网站下载适用于你系统的Visual C++ Redistributable ...
【compass完整可用项目】是一个基于特定技术栈的软件开发项目,该项目的核心是Compass库,一个与Lucene紧密集成的全文搜索引擎工具。Compass提供了一种简单的方式来在Java应用程序中集成全文搜索功能,使得开发者...
其中,*.cmd.xml 文件用于定义 common meta data,*.cpm.xml 文件提供了 POJO 到 common meta data 的映射,而 *.cfg.xml 文件定义了 Compass 的 Index 存放路径、搜索引擎分词等相关信息。 Annotation vs. XML ...