[英]How to index a String in Lucene?
我正在使用Lucene索引從文檔中讀取的字符串。 我不使用閱讀器類,因為我需要將字符串索引到不同的字段。
document.add(new Field("FIELD1","string1", Field.Store.YES, Field.Index.UNTOKENIZED));
document.add(new Field("FIELD2","string2", Field.Store.YES, Field.Index.UNTOKENIZED));
這在建立索引但搜索時起作用
QueryParser queryParser = new QueryParser("FIELD1", new StandardAnalyzer());
Query query = queryParser.parse(searchString);
Hits hits = indexSearcher.search(query);
System.out.println("Number of hits: " + hits.length());
不返回任何結果。
但是當我索引一個句子
document.add(new Field("FIELD1","This is sentence to be indexed", Field.Store.YES, Field.Index.TOKENIZED));
搜索工作正常。
謝謝。
您需要將字段的參數也設置為Field.Index.TOKENIZED,因為只有在標記化時才可以搜索。 單詞“ string1”將被索引為“ string1”。 沒有標記化,它將根本不會被索引。
用這個:
document.add(new Field("FIELD1","string1", Field.Store.YES, Field.Index.TOKENIZED));
document.add(new Field("FIELD2","string2", Field.Store.YES, Field.Index.TOKENIZED));
當您希望將包含多個單詞(例如“兩個單詞”)的字符串索引為一個可搜索元素而沒有標記化為兩個單詞時,您要么在索引期間需要使用KeywordAnalyzer(將整個字符串作為標記),要么可以使用StringField對象在更新版本的Lucene中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.