2010-05-16 16 views
6

Uso Zend Lucene non posso cercare numeri nei campi di descrizioneZend Lucene - Non è possibile cercare numeri

aggiunto in questo modo:

$doc->addField(Zend_Search_Lucene_Field::Text('description', $current_item['item_short_description'], 'utf-8')); 

Googling per questo ha mostrato che l'applicazione seguente codice dovrebbe risolvere il problema, ma è no ..:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 

qualche pensiero?

risposta

8

È necessario impostare l'analizzatore predefinito due volte: sul processo di indicizzazione e sul processo di ricerca.

utilizzare la riga di codice di cui sopra:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 
0

io non sono sicuro di 'Zend', ma per affrontare il numero di Lucene, è necessario l'uso seguente tecnica:

  • Per inserire int per documentare l'uso seguente:

    document.Add (nuovo campo (FIELD_SPEC, NumberTools.LongToString (YOUR_INT), Field.Store.YES, Field.Index.UN_TOKENIZED));

  • Per individuare il valore d'uso Termine: Termine (FIELD_SPEC, NumberTools.LongToString (YOUR_INT))

+0

Come posso usarlo per la descrizione? Voglio che i numeri all'interno della descrizione siano ricercabili. Non ho solo un "intero seprate". –

+0

@Pavel Dubinin - guarda la mia nota: "Per trovare valore usa Termine: ..." Quindi quando hai bisogno di ricerca lo crei come parte di BooleanQuery dove Term è costruito usando NumberTools. Un po 'complicato se usi il parser qury standard - in questo caso fai il preprocess sostituendo tutti i numeri nelle query per valore reso NumberTools – Dewfy

1

Hai usato quel comando, prima o dopo la chiamata Zend_Search_Lucene :: open()?

Chiamarlo in anticipo funziona sicuramente.

Problemi correlati