Lucene.net - 查询返回不需要的文档

时间:2012-08-27 16:59:00

标签: lucene lucene.net

我的所有Lucene.net(2.9.2)文档都有两个字段:

  • 类别ID
  • bodyText的

bodytext是默认字段,是存储所有文档文本的位置(使用Field.Store.NO , Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS)。

categoryid只是存储为文字的数字字段:Field.Store.YES, Field.Index.NOT_ANALYZED

执行此查询时,它仅返回具有该类别ID的文档:categoryid:1

但是,当我执行此查询时:categoryid:1 foo bar它会返回除1之外的其他类别的文​​档。

这是为什么?我如何强制它尊重原始categoryid:N查询字词?

1 个答案:

答案 0 :(得分:3)

您是否要求输入的所有单词都出现在匹配的文档中?

var analyzer = new StandardAnalyzer(Version.LUCENE_30);
var queryParser = new QueryParser(Version.LUCENE_30, "bodytext", analyzer);

// This ensures that all terms are required.
queryParser.DefaultOperator = QueryParser.Operator.AND;

var query = queryParser.Parse("categoryid:1 foo bar");
// query = "+categoryid:1 +bodytext:foo +bodytext:bar"