ok, ho cercato questo nelle ultime due ore con risultati che danno solo suggerimenti, e nemmeno un codice completo in soccorso (come imparerebbero i noob se non possono vederli ? campioni)Lucene - alla ricerca di un campo del valore numerico
ho creato un indice in questo modo:
Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath("/data/channels/")));
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
IndexWriter writer = new IndexWriter(directory, analyzer, true, Lucene.Net.Index.IndexWriter.MaxFieldLength.UNLIMITED);
Document doc = new Document();
doc.Add(new Field("ID", "0", Field.Store.YES, Field.Index.NO));
doc.Add(new Field("parentID", "0", Field.Store.YES, Field.Index.NO));
doc.Add(new Field("Title", "Root", Field.Store.YES, Field.Index.ANALYZED));
writer.AddDocument(doc);
writer.Optimize();
writer.Close();
Ora, voglio cercare il campo ID
Se il valore è uguale a 0
(per ottenere il singolo record che ho lì) ...
ma, una semplice ricerca come questa:
Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath("/data/channels")));
Analyzer analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer(Version.LUCENE_29);
Searcher searcher = new Lucene.Net.Search.IndexSearcher(IndexReader.Open(directory, true));
Query query = new Lucene.Net.QueryParsers.QueryParser(Version.LUCENE_29, "ID", analyzer).Parse("0");
Hits hits = searcher.Search(query);
non restituisce risultati. ho letto su NumericRange
, KeywordAnalyzer
e altre cose, ma poiché nessuno di loro fornisce un campione non riuscivo a capire come farlo.
per favore, gente gentile, dammi un esempio di come far funzionare questa cosa.
Se stai cercando un singolo int, non è necessario cercare per intervallo. Basta usare questo: Query TermQuery = nuovo TermQuery (nuovo Termine ("TaxonRankSortOrder", NumericUtils.IntToPrefixCoded (3000))); –