代码之家  ›  专栏  ›  技术社区  ›  soulmerge

匹配Lucene中的整个字段

  •  1
  • soulmerge  · 技术社区  · 15 年前

    我目前正在用Lucene索引数据库。我在考虑将表ID存储在索引中,但是我找不到一种方法来按该字段检索文档。我想一些伪代码会进一步澄清这个问题:

    document.add("_id", 7, Field.Index.UN_TOKENIZED, Field.Store.YES);
    // How can I query the document with _id=7
    // without getting the document with _id=17 or _id=71?
    
    2 回复  |  直到 12 年前
        1
  •  1
  •   Yuval F    15 年前

    Zend Lucene的编辑: 您需要一个关键字类型字段,以便进行搜索。 对于索引,请使用如下内容:

    $doc->addField(Zend_Search_Lucene_Field::Keyword('_id', '7'));
    

    搜索时,请使用:

    $idTerm  = new Zend_Search_Lucene_Index_Term('_id', '7');
    $idQuery = new Zend_Search_Lucene_Search_Query_Term($idTerm);
    
        2
  •  1
  •   Richard Fila    12 年前

    我刚刚在Zend Lucene搜索引擎上成功地实现了这一点。但是,经过一段时间的故障排除后,我发现字段名和字段值与显示的方式相反。要更正示例:

    // Fine - no change here
    $doc->addField(Zend_Search_Lucene_Field::Keyword('_id', '7'));
    
    // Reversed order of parameters
    $idTerm  = new Zend_Search_Lucene_Index_Term('7', '_id',);
    $idQuery = new Zend_Search_Lucene_Search_Query_Term($idTerm);
    

    我希望能帮助别人!