Lucene Query(Term- / BooleanQuery)返回误报

时间:2014-11-07 12:27:12

标签: java lucene

我正在尝试进行一些语言分析,并根据Lucene索引编写了一个小的“句子库”。它将文本分成句子并将它们(每个)存储在文档中的作用。

以下是我存储句子的方式:

Document doc = new Document();
doc.add(new StringField("language", getLanguage(), Store.YES));
doc.add(new TextField("text", getLiteralValue(), Store.YES));

StringBuilder sb = new StringBuilder();

for (int i = 0; i < getTokens().size(); i++) {
    doc.add(new StringField("term_" + i, getTokens().get(i).getLiteralValue(), Store.YES));
    doc.add(new StringField("terms", getTokens().get(i).getLiteralValue(), Store.YES));
    doc.add(new StringField("pos_" + i, getTokens().get(i).getPoS(), Store.YES));

    sb.append(getTokens().get(i).getPoS()).append(" ");
}

doc.add(new IntField("length", getTokens().size(), Store.YES));
doc.add(new TextField("pos", sb.toString(), Store.YES));

结果是一个构造,我可以在其中查询部分标记序列,例如“JJ NN NN”(我使用WhiteSpaceAnalyzer)并获得句子作为结果(然后我将其解析为Pojos)。

我将所有令牌存储在单独的多值 StringField (“terms”)中,并希望能够针对它运行查询以查找包含特定术语的文档

我故意不想使用lucene来标记整个句子,因为我已经将单个标记作为输入并且希望能够轻松地迭代它们。

出于某种原因,当使用TermQuery进行搜索时,会出现不包含我正在搜索的术语的结果,例如:

TermQuery tq = new TermQuery(new Term("terms", "hierarchy"));

将返回包含以下文字的文档:

  

评论&amp;完成文件。

Document<
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<language:en> stored,indexed,tokenized<text:Review & completion of the document.>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<term_0:Review> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<terms:Review>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<pos_0:NOUN> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<term_1:&>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<terms:&> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<pos_1:CONJ>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<term_2:completion> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<terms:completion>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<pos_2:NOUN> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<term_3:of>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<terms:of> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<pos_3:ADP>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<term_4:the> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<terms:the>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<pos_4:DET> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<term_5:document>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<terms:document> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<pos_5:NOUN>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<term_6:.> stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<terms:.>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<pos_6:.> stored<length:7> stored,indexed,tokenized<pos:NOUN CONJ NOUN ADP DET NOUN . >

>

没有“条款”的价值看起来像字符串“hiearchy”,所以这个文件怎么会出现在搜索结果中?

0 个答案:

没有答案