我有一些文档,我正在与Lucene建立索引。这些文档基本上有标题(文本)和正文(文本)。目前,我正在用LuceneDocuments创建一个索引,其中包括一个可搜索字段,基本上是title+“”+body。这样,如果您搜索标题或正文中出现的任何内容,您将找到文档
但是,现在我了解到了一个新的要求,即标题中的匹配项应使文档比正文中的匹配项“更相关”。因此,如果有一个标题为“软件设计”的文档,并且用户搜索“软件设计”,那么该文档在搜索结果中的位置应高于一个名为“其他”的文档,该文档在正文中大量提及软
我希望solr进行模糊搜索,并将查询作为子词查找。应优先选择匹配的完整单词
这适用于以下查询:
http://localhost:8983/solr/select?qt=my_qt&q=myword
http://localhost:8983/solr/select?qt=my_qt&q=*myword*~0.8+myword~0.8
�
是否有可能删除请求中的所有通配符和模糊参数
我希望配置solr a way,以便它在接收以下查询时执行与上述查询相同的搜索:
http://loca
看看这个查询:
-HOSTNAME:ram AND SEVERITY:information
上面的查询没有给出预期的结果。我知道我们需要将*:*附加到一个完全否定的查询中,我还发现,通过将*:*附加到主机名搜索条件中,可以解决上述问题,但这可能会造成严重的性能问题,因为我的应用程序直接从最终用户获取搜索查询
请告诉我如何着手并帮助我找到最佳解决方案 您的查询应该可以正常运行,但是,仅包含否定项不起作用:
-HOSTNAME:ram AND -SEVERITY:ERROR
因为没有什么可以减
有没有办法让Lucene/Elasticsearch只显示在给定索引中索引了哪些字段?我正在试图确定某些字段是否由于配置选项而被正确索引,但我不知道如何确定。您可以通过调用来检查特定索引和类型的映射:
http://localhost:9200/index/type/_mapping
任何索引的内容都应该有一个条目。另请参见分析API,以了解文本是如何分解为术语的
标签: Lucene
analyzerquery-parser
我是Lucene新手,尝试使用QueryParser将原始字符串解析为Query
我想知道,为什么QueryParser.Parse()方法需要一个Analyzer参数
如果分析与查询有关,那么在处理常规的Query对象(TermQuery,BooleanQuery等)时,也应该指定Analyzer,如果不是,为什么QueryParser需要它?索引时,Lucene将文本划分为原子单位(标记)。在此阶段可能会发生许多事情(例如,小写、词干、删除停止字等)。最终结果是一个术语
然后,当您进行查询时
标签: Lucene
information-retrievalpylucene
我想索引一些文件并从中检索一些信息
我使用python中的这段代码为文档编制索引:
import sys ;
import lucene ;
from java.io import File ;
from org.apache.lucene.analysis.standard import StandardAnalyzer ;
from org.apache.lucene.document import Document, Field ;
from org.apache.lucene.inde
当我使用query.toString()编写查询时,它的字符串表示形式为QueryParser可读的格式,类似
+value:trump +value:president +score:[0 TO 20]
<BooleanQuery>
<Clause fieldName="value" occurs="must">
<TermQuery>trump</TermQuery>
</Clause>
<Clause
标签: Lucene
information-retrieval
以下是Lucene评分公式:
分数(q,d)=坐标(q,d)·查询范式(q)·∑ (tf(t在d中)·idf(t)2·t.getBoost()·norm(t,d))
多场得分呢
分数是直接求和还是求平均,还是….?这取决于操作。如果你正在做一个OR(姓名:bill或性别:male),则取二者中的最大值。如果您正在进行AND运算,它将进行求和。这取决于运算。如果你正在做一个OR(姓名:bill或性别:male),则取二者中的最大值。如果你在做AND,它将做一个总和。你可以在课堂上阅读评分的详细信
我正在基于web的应用程序中使用Lucene搜索API。
建议使用Lucene的IndexSearcher类中的哪种方法?有任何方法比其他方法更快吗
1.索引搜索器(目录)
2.索引搜索器(索引阅读器r)
3.索引搜索器(字符串路径)
感谢阅读。内部接受目录和路径索引的构造函数使用accpets IndexReader的构造函数。因此,其中一个没有性能优势。请记住,如果使用IndexReader创建searcher,则必须在关闭searcher后显式关闭阅读器 都是为了方便
如果只想创建索引搜索
Lucene怎么会比老的好
在什么情况下,您应该继续使用RangeQuery?根据链接中的RangeQuery文档,
ConstantCoreRange查询:
比RangeQuery快
如果值的范围较大,则不会导致BooleanQuery.ToomAnyCauses异常
不影响基于可能匹配的单个术语的稀缺性的评分
假设您对较短的时间段的评分较高感兴趣(假设您正在寻找一个小时范围,但希望较短的时间段的评分较高-可能您正在寻找一天中“缓慢”的时间来运行备份过程)。在这种情况下,较旧的RangeQ
我正在考虑添加JMXbean,以便对lucene索引进行热备份
LuceneMBean mbean=新LuceneMBeanImpl;
ObjectName=newObjectNameIndexing.index:type=lucene;
MBeanServer mbs=ManagementFactory.getPlatformMBeanServer;
mbs.registerMBeanmbean,名称
Lucembean将有一个名为backupIndexString目录的方法
我查阅了luce
标签: Lucene
internalsfaceted-search
上下文
这是一个主要关于Lucene(或者可能是Solr)内部的问题。主要主题是分面搜索,其中搜索可以沿着对象的多个独立维度(分面)(例如大小、速度、汽车价格)进行
当使用关系数据库实现时,对于大量的facet,多字段索引没有用处,因为facet可以按任何顺序搜索,因此使用特定的有序多索引的几率很低,并且创建所有可能的索引顺序是无法忍受的
Solr被宣传为能够很好地处理分面搜索任务,如果我认为正确的话,它必须与Lucene(据说)联系起来,Lucene在多字段查询中表现良好(文档的字段与对象的分
我正在建立一个基于ApacheLucene的搜索引擎服务,但我希望所有的索引和页面排名处理都能在服务器负载减少后进行,因为它也会运行其他服务。到那时,我将暂时存储要编制索引的数据。所以基本上我必须弄清楚什么时候负载低于某个水平?我有什么办法可以做到这一点吗???您是否在问如何跟踪每秒的查询?(或每分钟等)是的…就像我的服务器将处理网站或数据存储,或者两者兼而有之…重点是我想以最有效的方式使用我的服务器资源…所以这样做是一个好主意吗?因为我知道的方法也需要大量的服务器资源。。。
Java有两个中文分析器,一个是SEN,我想知道是否有人知道.NET的中文分析器?它在contrib项目中,都有.NET版本。谢谢链接。我不知道它的存在。我正在用Sitecore的Lucene indexer实现这一点,但它似乎陷入了一个循环,无法完成。我假设代码已经过测试。我注意到一些待办事项的评论。不幸的是,我不确定-你有没有运气?
我在Solr/Lucene查询语法中遇到了使用-运算符的奇怪行为。
如果我执行查询
-text AND -text
我得到了所有预期的结果(很多),但如果我加上一些括号
-text AND (-text)
或
然后我就什么结果也没有了。我不明白为什么。
你对这种行为有什么解释吗
提前感谢。解释取决于您使用的搜索处理程序和整个查询字符串
例如:您可以搜索多个字段,如
text和text这个问题在英语中得到了很好的回答
. 他们还在官方FAQ中添加了一条条目,内容如下:
布尔查询必须至少有一
我想输出文档的分数。我为此编写的代码是:
IndexReader reader = IndexReader.open(FSDirectory.open(indexDir));
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new IKAnalyzer();
QueryParser parser = new QueryParser(Version.LUCENE_31, "title",
我使用http api查询ravendb(因此LINQ查询不是我问题的解决方案)。
我的产品文档如下所示:
{
"editDate": "2012-08-29T15:00:00.846Z"
}
我有索引:
from doc in docs.Product
select new { doc.editDate }
我想查询特定日期和时间之前的所有文档。我可以使用以下语法查询日期:
editDate: [NULL TO 2012-09-17]
但是,我也不知道如何查询时间组件。
有什么想法吗
TermQuery和SpanTermQuery之间似乎没有任何功能上的区别。还有其他的区别吗,比如在搜索性能方面?我想知道,即使差别很小
如果有区别的话,我使用的是Lucene.Net 2.9.4g。如果您不需要Spans搜索API中的功能,则没有功能上的区别。例如,如果要使用spanarquery/SpanOrQuery//SpanNotQuery等,则需要对子句使用SpanTermQuery,但如果不使用span API,则不需要它
使用有效载荷时,跨度也非常方便
这两个类的性能应该是相同的
ElasticSearch版本:0.90.2
我正试图让自定义评分查询工作,以便它按最近情况对文档进行评分,但到目前为止,我只得到了一个
ClassCastException[org.elasticsearch.index.fielddata.ScriptDocValues$Longs cannot be cast to java.lang.Integer]
其思想是使用具有整数类型时间戳的字段索引文档,然后通过查询中的当前时间戳参数对其进行比较。
为什么索引的整数值变长了
以下是要复制的命令
在一个字段上,我想设置一个自定义分析器,它有自定义的过滤器,重点是词干分析,所以“闪存卡”和“闪存卡”被词干分析到相同的根,所以返回相同的结果
当我运行以下查询时,我得到了命中率(很好),但“闪存卡”和“闪存卡”各自返回不同的结果:
{"query_string": {
"fields": ["description"],
"query": query
}
}
但当我运行以下查询时,没有得到任何结果:
{"query_string": {
"fields
我在数据库中使用OrientDB Lucene空间索引,希望使用边界框搜索,但我想知道参数内是如何工作的
来自Lucene OrientDB的Eg
从[51.507222,-0.1275],[55.507222,-0.1275]]内的[纬度,经度]位置选择*
它如何在这两个latlng参数内计算边界框?当它们具有相同的经度时
请提供建议,谢谢查看他们的代码后,我发现他们正在构建边界框。其中,他们仅采用2个latlng参数来构建边界框,即西南第一个参数和东北第二个参数。
他们将图书馆用作他们的地理
标签:elasticsearch Lucene
search-engine
我有一个RDBMS表,它有多个列,并且是异构的,需要在elasticsearch中从这些表创建索引。那么,哪一个是elasticsearch中创建类型的最佳实践界面呢。我在考虑多重选择
1创建与rdbms表相同的类型,并添加与表中记录相同的文档
2创建一个具有两个文件的类型,其中一个用于标识该文档的字段和另一个字段将是表、列和值的串联。因此,通过这种方式,所有表中只有两个文件,并在一个字段上搜索
那么你能告诉我,哪种方法是创建类型的最好方法。如果需要更多信息,请告诉我。以最方便您的搜索要求的形式
如果我更新文档中映射为未索引的字段,ES是否仍会重新索引整个文档?如果是,是因为_源需要重新编制索引吗?是否可以不索引_source?,只存储。是的,ES将重新索引文档,因为这是更新文档的唯一方式:创建新文档,删除旧文档
这是ES中的一个基本原则:Lucene段(磁盘上的文件)仅被删除(通过合并)或添加
我在我的服务器上安装了elastisearch,其大小大约为10GB,我有16GB的RAM和1TB的空间。但关于elasticsearch,仍然有一些奇怪的问题我无法理解
我将10GB的ram专用于elasticsearch,但当发生大量插入操作时,我的碎片会下降并显示内存不足错误
随机elasticsearch统计使用我的服务器的最大资源,如下所示,结果服务器性能几乎没有变化
你的索引的大小是多少?我的elasticsearch的总大小约为10GB,我有许多索引,但只有一个索引有大量的条
我已经为Elasticsearch(1.7.3)建立了一个大人物索引
我正在尝试搜索个人信息(数千万)。Person的性别(即“M”或“F”)是Person文档中的许多字段之一
当我使用匹配查询进行搜索时,它需要花费很长时间(我猜它需要整理大量的帖子列表?),因为可能至少有一百万个性别。这是一个有效的观察结果吗
我正在进行匹配查询,因为我想要分数
{
"explain": true,
"from": 0,
"size": 10,
"query": {
"filtered"
我的MySQL数据库中有两个模型:Users和Posts
用户具有地理位置属性(lat/long)
posts只是有一个文本体
我想使用Elasticsearch查找所有匹配字符串的帖子加上使用用户的位置作为过滤器。问题是——用户的位置总是在变化(当人们在城市里走动时)。我将经常更新每个用户的lat/long
这是我当前的解决方案:
为帖子编制索引,并在每个帖子中都有一个地理位置属性
文件。当用户更改位置时,运行elasticsearch批处理
更新该用户的所有帖子,并修改“地理位置”属性
在那
假设我有一个允许用户管理客户档案的系统。客户配置文件可能包括以下字段
名字
姓氏
城市
陈述
拉链
出生日期
雇主
对于给定地理位置的用户来说,城市的选择通常是一组4-5个本地城市。我正在尝试保存用户,避免其进入同一个城市或来自同一组4-5个城市的城市
在lucene中,是否可能在给定过去数据的情况下,lucene识别出一组常见的城市,并自动向用户提供一个列表供选择
我想把同样的逻辑应用到其他领域,比如雇主。如果。该市有2-3家大雇主,如果前3家雇主中有一家,那么新客户很有可能为其中一家工作
所
我想通过编程在lucene字段上创建一个RangeQuery。
我找到了PointRangeQueryBuilder,但没有找到如何在Java代码块中使用它的任何示例。
有谁能给我一个提示(代码示例)或一个指向某个示例的指针吗?xml queryParser使用该类。关于如何使用该queryParser的示例,lucene在演示它时附带了org.apache.lucene.demo.xmlparser
要简单地针对两个PointValue创建一个范围查询,可以按如下方式执行:
Query Que
我正在使用ApacheLucene5.5.3。我在代码中使用了org.apache.lucene.analysis.standard.StandardAnalyzer,并使用下面的代码片段创建索引
Document doc = new Document();
doc.add(new TextField("userName", getUserName(), Field.Store.YES));
现在,如果我搜索字符串“ALL-”,那么我不会得到任何搜索结果,但是如果我搜索字符串“ALL Cat
Elastic Search 2.4会在Lucene 4.10.3上运行吗?还是我也需要升级到Lucene 5.5.2?正如Nikhil Bhide所评论的,拥有不同版本的依赖JAR文件通常会导致意外行为和不稳定性。好的做法是将它们全部更新为用于编译ES JAR文件的版本
ES 2.4.0 JAR文件使用Lucene 5.5.2的以下软件包:
lucene岩芯
lucene反向编解码器
lucene分析仪通用
lucene查询
lucene存储器
lucene荧光灯
卢克尼探险家
lucene
标签: Lucene
lucene.netmorelikethis
我编写了这个简单的代码来查找具有文档id的类似文档
using (IndexReader indexReader = IndexReader.Open(FSDirectory.Open(new DirectoryInfo(LuceneDir)), true))
{
MoreLikeThis mlt = new MoreLikeThis(indexReader);
mlt.SetFieldNames(new String[] { "Id", "Title", "Details" })
我计划主要使用Elasticsearch进行数据分析。我有一个很大的文档,它有很多数字属性(最多4个字节)。我文档中的大多数字段中只有大约30%的值。如果我理解正确,我可以利用docvalues特性,它类似于某些数据库中的列数据布局。我想知道Elasticsearch/Lucene将如何存储这些数据。是否使用任何压缩(例如运行长度)或密集数据布局,其中空值将占用与值相同的存储空间?ElasticSearch的默认行为是在NULL值的情况下根本不添加字段。您可以使用null\u value强制映射
我不会在我运行的搜索中使用评分。我确实使用排序,但当然是按日期和其他字段。我在考虑关闭规范存储、计算等功能,但我还没有找到一个能够描述规范所有用法的答案
除了评分,elastic/lucene使用的标准是什么?当您不使用标准进行评分时,可以将其关闭
发件人:
你不需要在一个特定的领域得分,你应该禁用该领域的规范。尤其是,仅用于筛选或聚合的字段
标签: Lucene
lucene.netquery-parser
使用以下代码块:
public void MultiField(string fieldValue, string[] fieldList)
{
List<Occur> occurs = new List<Occur>();
foreach (string field in fieldList)
{
occurs.Add(Occur.SHOULD);
}
Mu
当我对索引做一些修改时。从表面上看,索引文件结构没有改变。但事实上,该指数确实发生了变化。这是因为当索引发生重大变化时,索引文件结构可能会发生变化
然后SearchManager、MaybeRefresh或DirectoryReader.openIfchange无法工作。它返回旧的indexsearch。是否必须更改索引文件结构以便它们可以工作?这不是问题。很抱歉我犯了一个错误
我试图返回在我的Lucene索引中引起点击的原始术语。例如,我的搜索字符串是“敏捷的棕色狐狸跳过懒惰的狗”。“狗”一词在索引中有“狗带”和“遛狗”之类的词条。同样,《狐狸》也有像《狐狸手套》和《狐狸洛西》这样的热门歌曲
因此,我想为用户打印出原始的“QuickBrownFox”字符串,其中突出显示了点击(dog和fox)的术语。下面是几个使用解释方法的例子,但是答案没有提到最后一步。
我认为Lucene不会轻易做到这一点,我将不得不使用正则表达式 我想出了一种方法来生成一个字符串,该字符串是带有
标签:elasticsearch Lucene
hibernate-search
我正在尝试使用hibernate搜索全文查询从IDEX获取数据。
以下是索引结构:
{
"_index" : "basclt1400",
"_type" : "com.csc.pt.svc.data.to.Basclt1400TO",
"_id" : "00,0006682,CPP,05,00",
"_score" : 1.0,
"_source" : {
"id" : "00,0006682,CPP,05,00",
"locat
标签: Lucene
jcrjackrabbitjackrabbit-oak
我尝试使用Oak版本1.16.0在文件内容中实现全文搜索
试图创建索引,就像Oak文档中所说的那样,对所有属性进行索引
/oak:index/assetType
- jcr:primaryType = "oak:QueryIndexDefinition"
- type = "lucene"
- compatVersion = 2
- async = "async"
+ indexRules
- jcr:primaryType = "nt:unstructured"
标签:elasticsearch Lucene
hibernate-search
我们有以下情况
鉴于以下两个实体
@Indexed
@Spatial(spatialMode = SpatialMode.HASH)
@Entity
@Table(name = "address")
Address{
@Field
@Basic
@Column(name = "state")
private String state;
@Field
@Basic
@Column(name = "town_city")
priva
我正在使用带spring boot的Hibernate搜索。我有一项要求,用户将有搜索操作员对机构名称执行以下操作:
以一个词开头
.Ali-->表示短语应严格以Ali开头,这意味着AlAli不应在结果中返回
未按上述要求返回包含期中、期初或期末的混合结果
以一个词结尾
卡姆兰。-->意味着它应该严格地结束Kamran,这意味着Kamranullah不应该在结果中返回
根据文档,将“*”放在开头不是一个好主意。我的问题是:我怎样才能达到预期的结果
我的域类和分析器:
@AnalyzerDef(
在Solr中,NOT和-(负)操作符之间有区别吗?如果是,是什么
Solr文档引用了,在这个问题上是模糊的。这两个操作符的作用方式似乎相同,但并不清楚。在Mauricio的答案上展开。(因为QueryParser类是我读过的最令人困惑的代码之一),如果您查看第145-152行,您将看到:
case MINUS:
jj_consume_token(MINUS);
ret = MOD_NOT;
break;
case NOT:
jj_cons
我计划建立类似pricegrabber.com/google产品搜索的东西
假设我已经在一个巨大的表中有了可用的数据。我打算把这些都交给Solr。这就解决了搜索问题。然而,我不知道如何做比较。我可以对数据库上Solr返回的产品进行分组查询(在UPC/SKU上)。然而,我不想那样做。我想以某种方式从Solr本身获取返回给我的产品比较数据以及搜索结果
你认为我的模式应该是怎样的?您认为这个用例可以通过Solr/Sphinx解决吗?您需要“结果分组”或“字段折叠”支持来正确处理它
在Solr中,该功能
如果我有一个字段x,它可以包含一个值y或z等,那么有没有一种方法可以查询,以便只返回已索引的值
范例
x可用可设置值=test1、test2、test3、test4
项目1:字段x=test1
项目2:字段x=test2
项目3:字段x=test4
第4项:字段x=test1
执行所需查询将返回以下列表:
test1、test2、test4我认为通配符查询搜索字段“x”和值“*”就可以了。如果字段被索引为字符串,或者使用关键字标记器索引而没有过滤器,则可以使用facets返回字段的前N个值。这意
使用Zned Lucene,当我搜索field1:value1时,返回了1000个点击。
当我搜索字段2:value2时,返回的点击数为0。
当我搜索field1:value1和field2:value2时,我返回了1000个点击,但我更希望返回0个点击
为什么它不做查询的交集呢?我找到了解决方案。实际上,通过使用zend lucene API,它可以很好地工作:
$query=new Zend_Search_Lucene_Search_query_multi term();
$query->a
如果可以使用Lucene木瓦过滤器将字符串标记为不同大小的木瓦或ngrams,例如:
"please divide this sentence into shingles"
变成:
shingles "please divide", "divide this", "this sentence", "sentence into", and "into shingles"
是否有人知道这是否可以与其他分析仪一起使用,以返回所发现的双元图或三元图的频率,例如:
"please divide thi
我正在构建一个以实体为中心的搜索引擎。以下是我迄今为止所做的工作
使用斯坦福命名实体识别器识别文档中的所有实体,如人员、电子邮件id等
使用Lucene索引器(如“Barack Obama”)构建了一个基于实体的索引表,字段名为“PERSON”,也使用基于关键字的索引
现在,我需要在这些实体之间建立关系。例如,如果问题类似于“奥巴马的妻子”,我需要向米歇尔·奥巴马解决这个问题。我希望两个实体“巴拉克·奥巴马”和“米歇尔·奥巴马”通过关系“配偶”联系起来。我参考了几篇关于关系提取的论文,但都是
标签: Lucene
azure-cognitive-search
需要有关在Azure中结合邻近搜索和模糊搜索的查询帮助。索引包括以下项目:
华盛顿大学
玛丽华盛顿大学基金会
华盛顿基督复临安息日会大学
搜索词:
华盛顿大学-(大学拼写错误)
这将返回记录1。i、 e大学的模糊匹配和其余单词的近似匹配。来自Azure搜索文档:
要进行模糊搜索,请在单个单词末尾使用波浪号“~”符号,并使用可选参数,该参数是一个介于0和2之间的数字(默认值),用于指定编辑距离。例如,“blue~”或“blue~1”将返回“blue”、“blues”和“glue”
在短语末尾插
标签:elasticsearch Lucene
full-text-search
我使用这样的查询在ES中运行:
boolQuery.must(QueryBuilders.matchQuery("field", value).minimumShouldMatch("50%"))
Lucene中这个查询的直接类比是什么?据我所知,匹配查询基本上是分析查询,并用分析器找到的所有术语创建布尔查询。您只需通过QueryParser传递文本,就可以接近
但你可以复制它如下:
公共静态查询makeMatchQuery(字符串字段名,字符串值)抛出IOException{
//让生成器开
我有lucene索引(不是很小,大约20gb),我注意到.tim文件大约是16GB。我知道这是一本术语词典,有没有办法缩小它的尺寸,甚至完全摆脱它?如果有,如果我这样做,我会失去什么
谢谢
标签:elasticsearch Lucene
fuzzy-search
我在弹性搜索中插入了位置,下面是弹性搜索存储位置的示例:
[
{
"lat": 1,
"lon": 1,
"place": "asddda ddsd asdad vasanth hhjkhk sdsdd asddasd"
},
{
"lat": 2,
"lon": 2,
"place": "
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 78 页