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

卢森。net GetFieldQuery与TermQuery

蓟安歌
2023-03-14

使用Lucene的标准分析仪。有问题的标题字段未存储、已分析。查询如下:

title:"Some-Url-Friendly-Title"

在Luke中,此查询被正确地重新编写为:

title:"some url friendly title" (- replaced by whitespace, everything lowercased).

我以为Lucene.net版本是:

new TermQuery(new Term("title","Some-Url-Friendly-Title"))

但是,没有返回任何结果。

然后我试着:

_parser.GetFieldQuery("title","Some-Url-Friendly-Title")

这一切都如期而至!

这两个查询都是通过:_searcher执行的。搜索([查询对象],[排序对象])

有人能给我指出正确的方向,看看TermQuery和_解析器之间的区别吗。GetFieldQuery()是什么?

共有2个答案

蒋俊
2023-03-14

在Lucene。Net版本3.0。3 GetFieldQuery由于其保护修饰符而无法访问。使用

MultiFieldQueryParser.Parse(searchText, field) 

相反

岳高明
2023-03-14

TermQuery比通过queryparser运行查询简单得多。它不仅没有小写,而且不理解如何分解连字符的术语,甚至没有标记化。它只是搜索你告诉它要查找的术语。这意味着它正在索引中寻找术语“某个Url友好的标题”作为一个单独的未标记关键字。我假设您使用的是分析器,所以可能不存在这样的令牌。

更进一步,如果您一直在搜索“某个Url友好标题”作为术语文本,您仍然不会找到任何内容,因为它将“某个Url友好标题”作为单个标记,而不是索引中的四个标记(或者更确切地说,术语)。

如果您查看标准查询解析器在解析查询时生成的内容,您将看到TermQuery只是它用来生成完整查询的构建块之一,还有BooleanQuery,可能还有PhraseQuery、Prefix Queriy等。

 类似资料:
  • 第一次使用Lucene,所以如果某些术语不正确,我会提前道歉。 我正在修改一个查询,没有得到预期的结果。搜索词用于构建布尔查询,我需要添加一个额外的字段进行搜索。这个名为的字段已经是索引的一部分(通过Lucene的确认),但尚未包含在搜索中。 当前布尔查询如下所示: (是引用字段名称的) 我认为这将是一个扩展标记数组的例子,如下所示: 但是当搜索我知道存在的时,这买回了没有结果,但是我知道存在的的

  • 我有一个系统,其中搜索查询具有不同boost值的多个字段。它在Lucene上运行。净额2.9。4因为这是一个Umbraco(6.x)网站,这就是Lucene的版本。NET的CMS使用。 我的客户问我是否可以添加词干分析,所以我编写了一个自定义分析器,可以执行标准/小写/停止/PorterStemmer。堵塞过滤器似乎工作正常。 但是现在,当我试图将我的新分析器与MultiFieldQueryPar

  • 试图让搜索按我需要的方式进行。。。目前,我使用StandardAnalyzer()将数据分析到索引中,然后使用QueryParser()和Query()并执行。。。如果文档中有“可疑”一词,搜索“可疑”,我会在其中找到我的文档,但如果搜索“可疑”,我不会得到任何结果。。。所以我的问题是,我想对我的搜索实现词干分析或更好的查询。。。我知道你会得到SnowBallaAnalyzer用于堵塞,但它在Lu

  • 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。 1. bagging的原理 在集成学习原理小结中,我们给Bagging画了下面一张原理图。 从上图可以看出,Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”。那么什么是随机采样? 随机采样(bootsrap)就是从我们的训练集里面采

  • 我已将Watson assistant与Fb messenger集成。我能够向聊天机器人发送消息,因为我是FB页面的管理员,但如何公开聊天机器人,以便FB上的任何用户都可以向其发送消息。

  • IPv4由于最初的设计原因,长度只有32位,所以只提供了大约40亿个地址。这造成了IPv4地址的耗尽危机。随后,IPv6被设计出来,并可以提供足够多的IP地址。但是IPv4与IPv6并不兼容,IPv4向IPv6的迁移并不容易。一些技术,比如说这里要说的CIDR和NAT,相继推广。这些技术可以缓解IPv4的稀缺状态,成就了IPv4一时的逆袭。 CIDR CIDR(Classless Inter Do