Lucene içinde tüm alanı Maç

2 Cevap php

Şu anda Lucene ile bir veritabanı indeksleme ediyorum. Ben endeksinde tablo id depolama düşünüyordum, ama ben bu alana göre belgeleri almak için bir yol bulamıyorum. Ben bazı sözde-kodu daha fazla soru açıklığa kavuşturmak olacaktır sanırım:

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 Cevap

EDIT for Zend Lucene: You will need a Keyword type field in order for it to be searched. For indexing, use something like:

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

Arama için kullanın:

$idTerm  = new Zend_Search_Lucene_Index_Term('_id', '7');
$idQuery = new Zend_Search_Lucene_Search_Query_Term($idTerm);

Sadece ben sadece benim Zend Lucene arama motoru üzerinde başarıyla uyguladık demek. Ancak, bazı zaman sorun giderme sonra alan adı ve alan değeri gösterilen şekilde etrafında ters yol olduğunu keşfetti. Örnek düzeltmek için:

// 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);

O birisi yardımcı olur umarım!