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 么?

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?