我的文件索引为字段" GuidId"领域" guidid"。如何使lucene net忽略大小写...以便以下查询搜索而不管情况如何?
TermQuery termQuery = new TermQuery(new Term("GuidId", guidId.ToString()));
我不想为包含字段" guidid"的文档编写另一个查询。 ..i.e。小写
答案 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,但在这种情况下听起来不太可能是那么大的交易。