qq358828690 2017-02-13 11:42 采纳率: 42.9%
浏览 1030

lucene 子条件比父条件查询的数据多

比如 我以“test”作为搜索条件,结果查出3条数据
我又以“test1”作为搜索条件,结果查询出5条数据
不明白为什么是出现这种情况。

   public static void createCom() {
        LuceneDB lucene = new LuceneDB();
        IndexWriter writer = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        Connection conn = lucene.getConnection();
        long startQueryTime = new Date().getTime();
        String sql = "SELECT company_name,address,lxr FROM COMPANY_IMPORT3";
        try {
            System.out.println("开始查询...");
            ps = conn.prepareStatement(sql);
            rs = ps.executeQuery();
            System.out.println("查询完成...");
            long endQueryTime = new Date().getTime();
            System.out.println("查询用时: " + (endQueryTime - startQueryTime));
            long startTime = new Date().getTime();
            writer = new IndexWriter(fille,analyzer, true, IndexWriter.MaxFieldLength.LIMITED);
            while(rs.next()){
                Document doc = new Document();
                //为字段 sname 建索引
                String company_name = Tools.removeNull(rs.getString("ADDRESS"));
                String address = Tools.removeNull(rs.getString("ADDRESS"));
                String lxr = Tools.removeNull(rs.getString("LXR"));
                doc.add(new Field("company_name",company_name,Field.Store.YES,Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
                doc.add(new Field("address",address,Field.Store.YES,Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
                doc.add(new Field("lxr",lxr,Field.Store.YES,Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS));
                writer.addDocument(doc);
            }
            long endTime = new Date().getTime();
            System.out.println("创建索引,用时: " + (endTime - startTime) + " 毫秒!,索引存放位置:" + fille);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                DBHelper.closeResultset(rs,conn);
                writer.optimize();//索引优化
                if(writer!=null){
                    writer.close();    //关闭读写器
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
        }
    }
    public static String QueryCom(String QueryString) {
        String[] fields = {"address","address","lxr"};
        JSONArray json = null;
        List list = null;
        Query query;
        try {
        Directory dir = FSDirectory.getDirectory(fille);
            IndexSearcher searcher = new IndexSearcher(dir);
            BooleanClause.Occur[] flags = new BooleanClause.Occur[] {BooleanClause.Occur.MUST};
            query = MultiFieldQueryParser.parse(QueryString, fields, flags, analyzer);
            TopDocs topDocs = searcher.search(query, 10);  
            list = new ArrayList();
            int num = 0;
            for(ScoreDoc scoreDoc : topDocs.scoreDocs){
                num++;
                Map<String,Object> map = new IgnoreKeyCaseMap<Object>();
                int DocId = scoreDoc.doc;
                Document doc = searcher.doc(DocId);
                String str= "";
                String com_name = doc.get("company_name");
                String address = doc.get("address");
                String lxr = doc.get("lxr");
                map.put("name", com_name);
                list.add(map);

            }
            System.out.println("========="+num);
            json = JSONArray.fromObject(list);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        if(json == null)return "";
            return json.toString();

    }
  • 写回答

1条回答 默认 最新

  • threenewbee 2017-02-13 12:09
    关注

    test和test1是两个单词,查询test1不会包含test的结果。不存在什么父子条件。
    你在google搜索 search,难道返回的结果包含 research,甚至 researching 么?

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题