是否有可能使lucene.net忽略该字段的查询案例?

时间:2014-04-08 23:01:03

标签: lucene.net lucene

我的文件索引为字段" GuidId"领域" guidid"。如何使lucene net忽略大小写...以便以下查询搜索而不管情况如何?

TermQuery termQuery = new TermQuery(new Term("GuidId", guidId.ToString()));

我不想为包含字段" guidid"的文档编写另一个查询。 ..i.e。小写

1 个答案:

答案 0 :(得分:1)

理想情况下,没有带有时髦案例的字段名称。如果要动态定义字段名称或某些字段名称,则应在将它们添加到索引之前将它们小写。完成后,它应该很容易将查询字段的名称保持为小写,并且您的状态良好。

如果由于某种原因您遇到这种区分大小写的数据,您将无法扩展查询以搜索字段名称的所有已知排列以获得所有结果。类似的东西:

Query finalQuery = new DisjunctionMaxQuery(0)
finalQuery.add(new TermQuery(new Term("GuidId", guidId.ToString())));
finalQuery.add(new TermQuery(new Term("guidid", guidId.ToString())));

DisjunctionMaxQuery在这里可能是一个不错的选择,因为它只返回查询集合中的最大得分命中,而不是可能在多个命中中复合得分。

您也可以使用MultiFieldQueryParser来达到类似效果。我不相信它使用DisjunctionMax,但在这种情况下听起来不太可能是那么大的交易。