【问题标题】:Lucene.NET version 4.8 beta casing issue [duplicate]Lucene.NET 4.8 版 beta 外壳问题 [重复]
【发布时间】:2019-06-03 13:28:07
【问题描述】:

我正在使用 Lucene.NET 版本 4.8(测试版)在我正在做的解决方案中执行小搜索任务,但在搜索不区分大小写时遇到问题。我知道 Lucene 不区分大小写,但是在使用 StandardAnalyzer 时,它应该小写存储的数据(根据此处的文档 StandardAnalyzer),只要您确保查询正确完成。

所以知道我在这里做错了什么吗?我将数据“Kirsten”存储在 4 个不同文档的字段中,搜索(小写)“kirsten”时没有命中,但在搜索“Kirsten”时,我得到了预期的 4。

这是我的查询代码:

        query = query.ToLowerInvariant();
        BooleanQuery q = new BooleanQuery {
            new BooleanClause(new WildcardQuery(new Term(FieldNames.Name, query + WildcardQuery.WILDCARD_STRING)), Occur.SHOULD),
            new BooleanClause(new WildcardQuery(new Term("mt-year", query)), Occur.SHOULD),
            new BooleanClause(new WildcardQuery(new Term("mt-class", query + WildcardQuery.WILDCARD_STRING)), Occur.SHOULD)
        };

问题是用户总是写小写版本,并期望它找到小写和大写。

【问题讨论】:

  • 您必须向我们展示您是如何创建文档的。您使用的是TextField 还是StringField?检查这个答案:stackoverflow.com/a/32011823/7225096
  • 这似乎确实是问题所在!我用的是StringField,看来我应该用TextField!我似乎已经很久没有使用 Lucene.NET 了!谢谢!

标签: lucene.net


【解决方案1】:

正如@Peska 在 cmets 中所写,这是在将文档(和数据)添加到 Lucene 时使用 StringField 而不是 TextField 的情况。

一旦我切换到使用 TextField,一切都按预期工作。

【讨论】:

  • 如果解决方案存在于另一个答案中(就像在这种情况下一样),我们不会发布答案,我们使用内置的“投票/标记作为重复关闭”。
猜你喜欢
  • 1970-01-01
  • 2020-08-02
  • 2011-05-10
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2021-09-17
  • 2018-07-31
相关资源
最近更新 更多