浏览 2961 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-08-28
最后修改:2013-08-28
刚刚看了一下帖子,说不要用关系型数据库来看待Lucene,不懂。 Lucene有自已的搜索语句?不懂。 要求大致如下: 通过一个文本框,可以查询数据库多张表的所有字段信息。 我现在是这样实现,把查询的数据生成索引,然后搜索索引。 问题:我查询的一对多数据,应该要以怎样的形式存储在索引中。 如: 邮件表 邮件id 邮件主题 接收人id 邮件接收人 1 A主题 1 张三 1 A主题 2 李四 2 B主题 1 张三 2 B主题 4 王五 希望能过一个文本框, 搜索 "张三"的时候,就得到 两条记录 A主题的邮件,B主题邮件,并显示邮件的接收人。 搜索 "A主题"的时候,就得到 一条记录 A主题的邮件,并显示邮件的接收人。 我现在把上面的数据插入到索引中,得到的数据会重复。请问应该怎样解决。 刚刚接触Lucene的新手。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-09-10
将 邮件主题存放成一个 field 邮件接收人存在在一个field (存储成 张三,李四..)
|
|
返回顶楼 | |
发表时间: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("索引创建完毕"); } |
|
返回顶楼 | |