我正在尝试使用一个单词作为查询来查找匹配,但它似乎无法找到它。我使用标准分析仪,但无法找到确切的结果。
我的索引文件是:
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。
答案 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));
这也可以让您搜索个别条款。