使用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()是什么?
在Lucene。Net版本3.0。3 GetFieldQuery由于其保护修饰符而无法访问。使用
MultiFieldQueryParser.Parse(searchText, field)
相反
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