Lucene:用单词搜索查找结果

时间:2015-04-07 03:33:39

标签: java lucene

我正在尝试使用一个单词作为查询来查找匹配,但它似乎无法找到它。我使用标准分析仪,但无法找到确切的结果。

我的索引文件是:

Document d = new Document();
d.add(new StringField("content","The quick brown fox jumps over the lazy dog"));

如果我使用WildCard查询:

Term term = new Term("content","The*");
Query q = new WildcardQuery(term);

它将返回内容:"快速的棕色狐狸跳过懒狗"

如果我使用TermQuery:

Term term = new Term("content","The quick brown fox jumps over the lazy dog");
Query q = new TermQuery(term);

它将返回内容:"快速的棕色狐狸跳过懒狗"

现在,我想使用" fox"作为我的新名词

Term term= new Term("content","fox");

但我不知道哪个是正确的查询,或者如何使用它。我已经尝试过QueryParser,TermQuery和MultiPhrase,但仍然没有运气。

任何帮助都可以做或指导。或者只是一个简单的查询,我可以用作指南。我已经阅读了很多教程但却找不到合适的教程。我正在使用lucene 5.0。

2 个答案:

答案 0 :(得分:1)

您的问题是您没有阅读StringField的Javadoc,其中包含:

  

< ..>整个String值被索引为单个标记< ..>

只需使用TextField就可以了。

答案 1 :(得分:0)

根据您的要求,似乎将整个字符串标记为更好:

Document doc = new Document(); 

doc.Add(new Field("Contents", "The quick brown fox jumps over the lazy dog", Field.Store.NO, Field.Index.TOKENIZED));

这也可以让您搜索个别条款。