当前位置: 首页 > 知识库问答 >
问题:

卢森。网络新手查询问题

曹镜
2023-03-14

第一次使用Lucene,所以如果某些术语不正确,我会提前道歉。

我正在修改一个Lucene查询,没有得到预期的结果。搜索词用于构建布尔查询,我需要添加一个额外的字段进行搜索。这个名为标签的字段已经是索引的一部分(通过Lucene的Luke确认),但尚未包含在搜索中。

当前布尔查询如下所示:

if (!String.IsNullOrEmpty(settings.SearchTerm))
  {
    booleanQuery.Add(KeywordQuery(settings.SearchTerm, analyzer), Occur.Must);
  }


 private Query KeywordQuery(string searchTerm, StandardAnalyzer analyzer)
   {
     var parser = new MultiFieldQueryParser(Version.LUCENE_29, new[] 
       { 
         LuceneMedia.IndexFields._Title, 
         LuceneMedia.IndexFields.Description
       }, analyzer);
     string sTerm = LuceneUtilities.AddSearchWildCard(searchTerm);
     Query query = LuceneUtilities.ParseQuery(sTerm, parser);

     return query;
   }

indexFields是引用字段名称的常量

我认为这将是一个扩展标记数组的例子,如下所示:

 new[] 
            { 
                LuceneMedia.IndexFields._Title, 
                LuceneMedia.IndexFields.Description, 
                LuceneMedia.IndexFields.Tags 
            }, 

但是当搜索我知道存在的标签时,这买回了没有结果,但是我知道存在的标题的结果。所以我想也许我应该改变OCCURS。必须OCCURS。应该但是>tag搜索返回所有结果。

我做错了什么?

共有1个答案

翟昊明
2023-03-14

这是搜索多个字段的正确方法,不幸的是我没有重新索引!

 类似资料:
  • 使用Lucene的标准分析仪。有问题的标题字段未存储、已分析。查询如下: 在Luke中,此查询被正确地重新编写为: 我以为Lucene.net版本是: 但是,没有返回任何结果。 然后我试着: 这一切都如期而至! 这两个查询都是通过:_searcher执行的。搜索([查询对象],[排序对象]) 有人能给我指出正确的方向,看看TermQuery和_解析器之间的区别吗。GetFieldQuery()是什

  • 问题内容: 我正在尝试通过将新记录更新或插入新的记录到 voice_user_table中 来更新数据库。该表定义如下: 这是我正在使用的查询。我实际上对所有值都使用了参数,但是出于测试目的,我将其替换为我确定应该可以使用的值。用户名 aaa@aaa.com 存在。 运行查询后,我得到的输出是: 尽管应该插入新值,但是因为该行在数据库上尚不存在。当我仅使用insert子句手动插入一行,然后执行上面

  • 查询用于返回区块链世界状态的数据; 例如,你可以编写一个查询来返回指定年龄的所有司机,或具有指定名称的所有司机。composer-rest-server组件通过生成的REST API暴露命名查询。 查询是业务网络定义的可选组件,用一个查询文件(queries.qry)编写。 注意:使用Hyperledger Fabric v1.0时,Hyperledger Fabric必须配置为使用CouchDB

  • 本文向大家介绍检查Docker网络,包括了检查Docker网络的使用技巧和注意事项,需要的朋友参考一下 示例 此命令将输出有关app-backend网络的详细信息。 此命令的输出的外观应类似于:            

  • 我参考了以下链接,用于查询超分类器Fabric网络中的分类器: http://hyperledger-fabric.readthedocs.io/en/release/write_first_app.html 在上面的链接中,他们给出了git-hub链接,在这个链接中我已经完成了所有的步骤,比如,-启动网络-运行查询到分类帐的节点脚本,比如invoke.js,query.js 但是在那个脚本中,他

  • 我们一直在围绕空手道netty的模拟功能进行一些概念验证工作,我们想知道以下方面的潜在未来功能: 在服务器启动后动态添加/删除模拟功能(例如,将模拟功能更紧密地耦合到单个测试用例) 在启动时利用多个模拟功能(或嵌套功能) 谢了麦克