2009-08-25 30 views
1

私は現在luceneでデータベースのインデックスを作成中です。インデックスにテーブルIDを格納することを考えていましたが、そのフィールドでドキュメントを取得する方法が見つかりません。 ZendのLuceneのためのLuceneの全フィールドに一致

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? 
+1

使用しているLucene APIのバージョンはどれですか? Lucene 2.4で、どのメソッドを使用していますか(Document.add()はFieldableをとりますか?) – Avi

+0

私は実際にPHPポート(Zendが提供しています)を使っていますが、これはクエリの構文が同じでなければならないということに気づいていませんでした。 – soulmerge

+0

クエリの構文が異なります。原則はそのままです。 PHPへの移植であるZendは現在、Lucene 2.3をサポートしています。これは現在のJava Luceneバージョンの約2バージョンです。 –

答えて

1

EDIT: それは、検索するためにあなたが順序でキーワードの種類のフィールドが必要になります私はいくつかの擬似コードは、さらに、問題を明確にしますね。検索、使用のために

$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); 
1

ただ、私はちょうど私の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); 

私は誰かを助けることを願っています!

関連する問題