Lucene.net查询包含并避免空字符串字段



我有一个Lucene Index设置,我可以很好地查询。我只是无法获得"字段不等于空字符串"条件。例如,在以下代码样品中,我想有3个条件

  1. 其中" country tag"字段包含" {4ed2f7ee-5C2A-418C-B2F6-236F94166BA1}"。
  2. 其中"乡村标签"字段不是空字符串。
  3. 其中"日期"范围在" 20110101T000000"one_answers" 20121001T000000"之间。

        WildcardQuery taggingQuery = new WildcardQuery(new Term("country tag", "*" + ShortID.Encode("{4ED2F7EE-5C2A-418C-B2F6-236F94166BA1}").ToLowerInvariant() + "*"));
        TermQuery taggingNotQuery = new Term("country tag", " "));
        RangeQuery rangeQuery = new RangeQuery(new Term("date", "20110101T000000"), new Term("date", "20121001T000000"), true);
        BooleanQuery booleanQuery = new BooleanQuery();
        booleanQuery.Add(taggingQuery, BooleanClause.Occur.MUST);
        booleanQuery.Add(taggingNotQuery, BooleanClause.Occur.MUST_NOT);
        booleanQuery.Add(rangeQuery, BooleanClause.Occur.MUST);
    

我感觉自己做错了,或者我的查询以某种方式是错误的。我不需要一个条件,我不得不寻找空的或空字段。

任何帮助都将受到赞赏!

如果允许'*'作为搜索字符串中的第一个字符,Lucene可以使用诸如" countryTag:*"之类的查询来查找所有包含 countryTag中任何内容的文档/strong>字段。(Lucene的默认值是在查询字符串中禁用初始'*'。)

我在设置索引时应该更加注意。我忘了为每个字段添加现场分析仪。多语言领域通过不同的分析仪而不是标准分析仪进行了索引。我将其添加到我的配置部分以进行现场爬网,我的查询开始工作

<fieldTypes hint="raw:AddFieldTypes">
                  <!-- Text fields need to be tokenized -->
                  <fieldType name="single-line text" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="multi-line text" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="word document" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="html" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="rich text" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="memo" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="text" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <!-- Multilist based fields need to be tokenized to support search of multiple values -->
                  <fieldType name="multilist" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="treelist" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="treelistex" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <fieldType name="checklist" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                  <!-- Legacy tree list field from ver. 5.3 -->
                  <fieldType name="tree list" storageType="NO" indexType="TOKENIZED" vectorType="NO" boost="1f" />
                </fieldTypes>

相关内容

最新更新