簡體   English   中英

如何在Lucene中索引字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM