设为首页 加入收藏

TOP

mongodb全文搜索解决方案(lucene+IKAnalyzer)(二)
2014-11-24 08:09:31 来源: 作者: 【 】 浏览:10
Tags:mongodb 全文 搜索 解决方案 lucene IKAnalyzer
/**
17
* 查找索引
18
*/
19
public class Demo2 {
20
public static void main(String[] args) throws Exception {
21
// onlysearching, so read-only=true
22
long starttime = System.currentTimeMillis();
23
IndexReader reader =IndexReader.open(FSDirectory.open(new File("E:\\lucene\\index")),true);
24
IndexSearcher searcher = new IndexSearcher(reader);
25
searcher.setSimilarity(new IKSimilarity()); //在索引器中使用IKSimilarity相似度评估器
26
//String[] keys = {"4","testtest"}; //关键字数组
27
//String[] fields = {"id","title"}; //搜索的字段
28
//BooleanClause.Occur[] flags = {BooleanClause.Occur.MUST,BooleanClause.Occur.MUST}; //BooleanClause.Occur[]数组,它表示多个条件之间的关系 www.2cto.com
29
//使用 IKQueryParser类提供的parseMultiField方法构建多字段多条件查询
30
//Query query = IKQueryParser.parseMultiField(fields,keys, flags); //IKQueryParser多个字段搜索
31
Query query =IKQueryParser.parse("text","上海人"); //IK搜索单个字段
32
IKAnalyzer analyzer = new IKAnalyzer();
33
//Query query =MultiFieldQueryParser.parse(Version.LUCENE_CURRENT, keys, fields, flags,analyzer); //用MultiFieldQueryParser得到query对象
34
System.out.println("query:"+query.toString()); //查询条件
35
/*TopScoreDocCollector topCollector = TopScoreDocCollector.create(searcher.maxDoc(), false);
36
searcher.search(query,topCollector);
37
38
ScoreDoc[] docs = topCollector.topDocs(3).scoreDocs;
39
System.out.println(docs.length);*/
40
41
/**
42
*得到TopDocs对象之后,可以获取它的成员变量totalHits和scoreDocs.这两个成员变量的访问权限是public的,所以可以直接访问
43 www.2cto.com
*/
44
TopDocs topDocs = searcher.search(query,1000001);
45
Integer count = topDocs.totalHits;
46
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
47
for(int i = 0;i
48
ScoreDoc scoreDoc = scoreDocs[i];
49
Document document = searcher.doc(scoreDoc.doc);
50
document.get("text");
51
}
52
System.out.println("查找数据量:"+count);
53
long endtime = System.currentTimeMillis();
54
System.out.println(endtime-starttime);
55
reader.close(); //关闭索引
56 www.2cto.com
}
57
}
//直接查找的代码:
01
package sample3;
02
03
import java.net.UnknownHostException;
04
05
import com.mongodb.BasicDBObject;
06
import com.mongodb.DB;
07
import com.mongodb.DBCollection;
08
import com.mongodb.DBCursor;
09
import com.mongodb.DBObject;
10
import com.mongodb.Mongo;
11
import com.mongodb.MongoException;
12
13
public class Demo3 {
14
public static void main(String[] args) throws Exception{
15 www.2cto.com
Mongo mongo = new Mongo();
16
DB db = mongo.getDB("zhang");
17
DBCollection dbc = db.getCollection("test3");
18
DBObject basicdb = new BasicDBObject();
19
basicdb.put("$regex","上海人");
20
basicdb.put("$options","");
21
long startTime = System.currentTimeMillis();
22
DBCursor cursor = dbc.find(new BasicDBObject("text",basicdb));
23
int j =0;
24
w
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Sqlite的简单介绍和应用 下一篇Oracle私房菜之数据库基础交流

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C/C++ 类模板与模板 (2025-12-27 01:49:52)
·C语言 模板化<templ (2025-12-27 01:49:49)
·C/C++模板类模板与函 (2025-12-27 01:49:46)
·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)