论坛首页 Java企业应用论坛

Lucene搜索数据库信息,一对多的数据如何存储(新手)

浏览 2961 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-08-28   最后修改:2013-08-28
我想用Lucene搜索数据库信息。但不知道怎么存储一对多的数据。
刚刚看了一下帖子,说不要用关系型数据库来看待Lucene,不懂。
Lucene有自已的搜索语句?不懂。

要求大致如下:
通过一个文本框,可以查询数据库多张表的所有字段信息。

我现在是这样实现,把查询的数据生成索引,然后搜索索引。

问题:我查询的一对多数据,应该要以怎样的形式存储在索引中。
如:
邮件表
邮件id   邮件主题    接收人id   邮件接收人
1            A主题             1          张三
1            A主题             2          李四
2            B主题             1          张三
2            B主题             4          王五

希望能过一个文本框,
搜索 "张三"的时候,就得到 两条记录 A主题的邮件,B主题邮件,并显示邮件的接收人。
搜索 "A主题"的时候,就得到 一条记录 A主题的邮件,并显示邮件的接收人。
我现在把上面的数据插入到索引中,得到的数据会重复。请问应该怎样解决。

刚刚接触Lucene的新手。
   发表时间:2013-09-10  
将 邮件主题存放成一个 field  邮件接收人存在在一个field (存储成 张三,李四..)
0 请登录后投票
   发表时间:2013-09-10   最后修改:2013-09-10
public static  void write(){
		IndexWriterConfig config  = new IndexWriterConfig(Version.LUCENE_36,new IKAnalyzer());
		IndexWriter writer  =  null;
		try {
			writer = new IndexWriter(FSDirectory.open(new File("C:\\Users\\mumaqm\\Desktop\\testfenleiindx")),config);
		} catch (Exception e) {
			e.printStackTrace();
		}
		List<Document> list = new  ArrayList<Document>();
		Document doc1 = new Document();
		Field title = new Field("title","对全文检索的初步认识",Store.YES,Index.ANALYZED);//主题
		Field receiver   = new Field("receiver","张三,李四,王五,赵六,田七",Store.YES,Index.ANALYZED);
		doc1.add(receiver);
		doc1.add(title);
	
		Document doc2 = new Document();
		Field title2 = new Field("title","对全文检索的第二步认识",Store.YES,Index.ANALYZED);//主题
		Field receiver2   = new Field("receiver","张三,李四,钱学森",Store.YES,Index.ANALYZED);
		doc2.add(receiver2);
		doc2.add(title2);
		
		Document doc3 = new Document();
		Field title3 = new Field("title","对全文检索的第三步认识",Store.YES,Index.ANALYZED);//主题
		Field receiver3   = new Field("receiver","小月月,芙蓉姐姐,干露露,某老师",Store.YES,Index.ANALYZED);
		doc3.add(receiver3);
		doc3.add(title3);
		
		list.add(doc1);
		list.add(doc2);
		list.add(doc3);
		try {
			writer.addDocuments(list);
			writer.commit();
			writer.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("索引创建完毕");
	}

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics