我試圖創建一個Lucene 4.10索引。我只是想在索引中保存我放入文檔中的確切字符串,而不用標記。Lucene - 精確的字符串匹配
我正在使用StandardAnalyzer。
Directory dir = FSDirectory.open(new File("myDire"));
Analyzer analyzer = new StandardAnalyzer();
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_4_10_0, analyzer);
iwc.setOpenMode(OpenMode.CREATE);
IndexWriter writer = new IndexWriter(dir, iwc);
StringField field1 = new StringField("1", content1, Store.YES);
StringField field2 = new StringField("2", content2, Store.YES);
StringField field3 = new StringField("3", content3, Store.YES);
doc.add(field1);
doc.add(field2);
doc.add(field3);
writer.addDocument(doc, analyzer);
writer.close();
如果我打印索引的內容,我可以看到存儲我的數據,例如,我的文檔具有這種「戰地3」:
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<3:"Fuel Tank Capacity"@en>
我想查詢索引爲了把它找回來:
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer();
QueryParser parser = new QueryParser("3", analyzer);
String queryString = "\"\"Fuel Tank Capacity"\@en\"";
Query query = parser.createPhraseQuery("3", QueryParser.escape(queryString));
TopDocs docs = searcher.search(query, null, 20);
我試着搜索術語「燃油箱容量」 @en(引號包含),所以我試圖逃跑,他們和我把另一對夫婦報價周圍的條款中爲了讓lucene受到關注我正在尋找整個文本。
如果我打印查詢,我得到: 3:「油箱容量EN」 但我不想拆就@符號的文本。
我認爲我的第一個問題是StandardAnalyzer,因爲它似乎標記了,如果我沒有弄錯的話。但是,我無法理解如何查詢索引以獲得完全「燃料箱容量」(包括引號)。
謝謝
看到這個很能說明問題:http://stackoverflow.com/a/15416213/ 4017037 – stacky 2014-09-12 13:56:07