ok, tôi đã tìm kiếm điều này trong hai giờ qua với kết quả chỉ cung cấp mẹo, và thậm chí không một mã hoàn chỉnh để giải cứu (như thế nào noobs sẽ tìm hiểu xem họ không thể thấy một số ? mẫu)Lucene - tìm kiếm trường giá trị số
tôi đã tạo ra một chỉ số như sau:
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();
Bây giờ, tôi muốn tìm kiếm các lĩnh vực ID
trường hợp giá trị tương đương với 0
(để có được hồ sơ duy nhất tôi có ở đó) ... .
nhưng, một tìm kiếm đơn giản như thế này:
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);
không trả lại kết quả nào. tôi đã đọc về NumericRange
, KeywordAnalyzer
và một số thứ khác, nhưng vì không có mẫu nào cung cấp mẫu, tôi không thể tìm ra cách thực hiện.
xin vui lòng, những người tử tế, hãy cho tôi một ví dụ về cách làm cho điều này hoạt động.
Nếu bạn chỉ tìm kiếm một int, bạn không cần phải tìm kiếm theo phạm vi. Chỉ cần sử dụng điều này: Truy vấn truy vấn = new TermQuery (thuật ngữ mới ("TaxonRankSortOrder", NumericUtils.IntToPrefixCoded (3000))); –