我有一个.net web应用程序,它使用Lucene.net实现公司搜索功能。
当注册用户添加新公司时,它会被保存到数据库中,并在基于Lucene的公司搜索索引中实时索引
在Lucene索引中添加公司时,如何处理两个或多个登录用户同时发布新公司的用例?此外,这两个公司是否会在没有任何文件锁定、锁定超时等相关问题的情况下被索引
如果我能在代码方面提供帮助,我将不胜感激
谢谢。默认情况下,Lucene.Net使用文本文件内置索引锁定。但是,如果默认锁定模式不够好,那么可以使用其他锁定模式(包含在Lu
有人能对这些搜索引擎进行简单的对比分析吗?这两种框架都有哪些优点
顺便说一句,我从几篇学术论文中看到了以下选择的基本解释:
在同一集合上组合索引
多索引查询
更新:
(from)包含对开源搜索引擎(包括Lucene和mg4j)在各个方面进行基准测试的更新概述:内存和CPU、索引大小、搜索性能、搜索质量等。Jeff Dalton包括2007年的Lucene和mg4j,并在2009年更新了比较
我没有使用mg4j。不过我用过Lucene。Lucene IMO的第一大特点是它的广泛采用和出色的用户
我的ElasticSearch索引中有9000个文档
我想按分析过的字符串字段排序,因此,为了做到这一点,我知道(通过谷歌)我必须更新映射以使字段不被分析,这样我就可以按此字段排序,并且我必须重新索引数据以反映映射中的变化
重新编制索引的过程在我的机器上花费了大约20分钟
奇怪的是,在一台功能强大的生产服务器上,重新编制索引的过程耗时约2小时
我检查了服务器上的内存状态和处理器使用情况,一切正常
我想知道的是:
是否有一种方法可以按已分析的标记化字段对文档进行排序,而无需对整个文档重新编制索引
我在ElasticSearch 0.19.11中使用以下文档:
{ "title": "dogs species",
"col_names": [ "name", "description", "country_of_origin" ],
"rows": [
{ "row": [ "Boxer", "good dog", "Germany" ] },
{ "row": [ "Irish Setter", "great dog", "Ireland"
标签: Lucene
inverted-indexskip-lists
在一些博客和lucene网站上,我知道lucene在倒排索引中使用数据结构“跳过列表”。但我对此有些疑惑
1:一般来说,跳过列表可以在内存中使用,但反向索引存储在磁盘中。那么lucene在搜索索引时如何使用它呢?只是在磁盘上扫描还是加载到内存?
2:skip list的insert运算符经常使用random(0,1)来决定是否插入到下一级,但在luncene的介绍中,每个术语似乎都有一个固定的间隔,那么lucene如何创建不同的“skip list”呢?
如果我错了,请纠正我 Lucene以两种
我们正在从java应用程序将文档索引到elasticsearch中。
我们无法索引所有必需的文档,因为由于以下异常(从日志中找到),其中一些文档的索引失败
可能是什么问题?即使正在编制索引的文档数低至28个,并且没有一个文档的大小过大,也会发生这种情况。您好,您使用的是什么版本的Elasticsearch?您使用哪个库为文档编制索引?Elasticsearch版本为1.0.1。我们使用ES Bulk API在1.1.0版中对本期文档编制索引,索引名为“shipped_events_v0001_2
我正在使用ElasticSearchJavaAPI为搜索创建索引和编写查询。
索引是在各个字段上创建的。其中一个字段是创建索引的数字(整数)
现在我们得到的输入是字符串形式的。我们必须在所有字段中搜索提供的输入。要搜索我们正在使用的数字字段
QueryBuilders.rangeQuery() method.
但当它在“to”或“from”字段中遇到任何非整数值时,它抛出
SearchPhaseExecutionException[Failed to execute phase [query]
我有Grafana 2.6和Elasticsearch 1.6.2作为数据源
在我的每个文档上,我都有一个字段“status”,其值可以是“Queued”、“Complete”
我想用图表显示状态为“按时排队”的文档数
以下是一份文件:
{
"_index": "myindex",
"_type": "e_sdoc",
"_id": "AVHFTlZiGCWSWOI9Qtj4",
"_score": 3.2619324,
"_source": {
"status":
我正在用日语开发lucene搜索。我在索引和搜索期间使用org.apache.lucene.analysis.JapaneseAnalyzer。索引正在成功进行
用于搜索的代码如下:
JapaneseAnalyzer-JapaneseAnalyzer=新的JapaneseAnalyzer(Version.LUCENE_CURRENT);
qp=新的QueryParser(Version.LUCENE_CURRENT,“关键词”,日本分析软件);
qp.SetAllowReadingWildcar
我的Lucene代码中有一行:
try
{
searcher.GetIndexReader();
}
catch(Exception ex)
{
throw ex;
}
finally
{
if (searcher != null)
{
searcher.Close();
}
}
在我的finally子句中,当我执行searcher.Close()时,它还会在幕后执行searcher.GetIndexReader().Close吗
还是需
搜索一组文档时,我可以轻松找到符合我的搜索条件的文档数:
Hits hits = Searcher.Search(query);
int DocumentCount = hits.Length();
如何确定文档中的点击总数?例如,假设我搜索“国会”,我得到2份文件。如何获取每个文档中发生“大会”的次数?例如,假设“国会”在文件1中出现2次,在文件2中出现3次。我想要的结果是5这是Lucene Java,但应该适用于Lucene.NET:
List docIds = // doc ids fo
是否可以修改Lucene 2.2以添加阿拉伯语分析器?如果有人已经这样做了,我在哪里可以获得source/jarLucene 3.0.1。它在花园里
您可以升级到Lucene 3.0.1以使其开箱即用。您可能无法像Lucene 2.2那样使用它,因为TokenStream API在此版本中已经更改。但是,如果您不希望迁移到最新的Lucene版本,那么将更改回2.2应该不是很困难。或者,您可以尝试使用for analyzer。这目前正在与Lucene trunk一起工作-我不知道它是否与Lucen
我试图查询solr服务器,以获得术语列表的最相关结果
例如,我有“诺基亚”、“iphone”、“充电器”等词的列表
我的架构包含以下数据:
诺基亚
iphone
诺基亚iphone otherwords
诺基亚白色
iphone白色
如果我运行一个简单的查询,如q=nokia或iphone或charger,我会得到“nokia iphone otherwords”作为最相关的结果(因为它包含更多的查询词)
我希望得到“诺基亚”或“iphone”或“iphone白色”作为第一个结果,因为对于每个单
Solr中有6个带文本字段“name_text”的索引文档。当字段值为“蓝猫”且搜索词为“蓝猫”时,管理UI将突出显示字段值。但是搜索查询返回0个结果。为什么会这样
0
2.
名称:蓝猫
*:*
0
2.
*:*
我有一个工作搜索,如果有人搜索两个单独的词(如“red barn”),Lucene会很好地返回“red barn”、“barn red”和“big brown barn旁边的红色拖拉机”的记录。这很好,但结果不会返回任何包含“redbarn”的内容(除非您专门搜索“redbarn”),但你不会得到“红色谷仓”记录)
我目前正在使用标准分析器,但不确定需要更改什么才能获得我想要的所有记录
如果有必要的话,我正在使用ElasticSearch(引擎盖下的Lucene)之上的NEST客户端。我已经研究
我正试图了解背景中到底发生了什么
给出了倒排指数的简化模型(忽略位置和分数):
对于每个单词,都有一个文档ID的排序列表。
多词查询与这些排序列表相交,生成另一个这样的列表。
(最后是排名)
e、 g
以下对字段的理解是否正确
不同的字段意味着不同的索引空间或至少不同的列表。e、 g.具有字段abstract和body可能会出现如下情况:
abstract:word1 7 10 ...
body:word1 1 3 9 10 11 ...
abstract:word2 3 4 ...
b
我正在使用Lucene 3.0,我需要一个与Lucene 3.0兼容的用于词干分析的雪球分析器。我在谷歌搜索了一个小时,却找不到可靠的消息来源。请建议一个我可以从中下载snowball.dll的可信位置。在Lucene 3.0.3文档中,SnowballAnalyzer位于:
org.apache.lucene.analysis.snowball.SnowballAnalyzer
文件载于:
Lucene下载档案位于:
据我所知,SnowBallaAnalyzer是基本Lucene软件包的
我有一个包含许多标签的用户文档
以下是映射:
{
"user" : {
"properties" : {
"tags" : {
"type" : "nested",
"properties" : {
"id" : {
"type" : "string",
"index" : "not_analyzed",
"store" : "yes"
我所有的ElasticSearch文档都有开始时间和结束时间。我希望构建一个直方图,其中包含给定时间段(例如30分钟)的文档计数,以便所有文档都具有StartTimeBucketStartTime。我将如何构造这样的搜索查询?如何在Kibana中显示结果?这对于Kibana 4.0.2(当前最新版本)是不可能的。此处的原因是您希望基于多个字段(开始时间和结束时间)的计算进行聚合,而Kibana目前不支持这一点。您能更好地解释一下您希望在直方图中显示什么吗?可以像您描述的那样进行查询,但我不知道您
我正在将计算字段中“文章”节点的所有“段落”子节点粘贴在一起。这是为了实现一篇文章可以通过其段落内容进行搜索和查找
为了实现这一点,我在节点下执行了以下操作:
<field fieldName="Paragraphs" storageType="YES" indexType="TOKENIZED">
MyWebsite.ComputedFields.Paragraphs,MyWebsite
</field>
关于如何实现这一点的任何其他线索(通过配置,而不是使用
Lucene支持在查询创建期间设置固定的相对字段权重。这意味着,对于所有匹配的文档,所有可搜索字段的内容与查询的相似性将根据这些固定的结束前权重进行加权和求和。我的问题是,是否可以在搜索过程中根据每个文档的属性动态设置文档字段权重。
例如,如果所有索引文档都有一个数字字段,我想根据每个文档文本字段的数字字段值设置其相对权重
谢谢
大卫是的,这是可能的。为了做到这一点,您可以使用。您可以在本书中找到一个很好的例子,其中CustomScoreQuery被扩展,以基于在日期进行的自定义计算来获取文档的
有时,我在索引中什么都没有,有时,我有一些文档。这正是我申请的性质。当索引确实包含文档时,我会按“final_score”降序排序。我的查询如下所示:
GET /_search
{
"query": {
"match_all":{}
},
"sort":[
{ "final_score" : "desc" }
]
}
但是,当索引中有0个文档时,此查询将中断。我必须删除排序才能使查询正常工作
如何使此查询适用于任意数量的文档(0
标签: Lucene
tokenizeanalyzersentence
我有一个扩展AttributeImpl的属性类。此外,我目前正在编写一个SentenceMountagingFilter类,它应该
获取由文本组成的输入流
把它标记成句子
为每个句子指定一种情感,即通过向其添加情感属性
我目前面临的问题是,Lucene中似乎只有将文本标记为单个标记的功能,例如,单个单词,但没有任何功能可以拆分为句子
在索引过程中,将其与我正在使用的常规英语分析器集成的最佳方法是什么?我希望避免并行处理EnglishAnalyzer和我的分析,而是在EnglishAnalyzer
我发现公司名称中的首字母缩略词有多种格式,例如
AB工业
A.B.工业
A B工业
这些名称可能以任何一种格式出现在我的索引数据中,也可能以任何一种格式出现在搜索查询中
是否有任何过滤器和标记器的组合,可以搜索任何列出的格式,以查找任何列出格式的索引文档?如果您使用的是StandardAnalyzer,您的数据将以“.”分隔,a和B将作为单独的术语索引
我建议尝试以下选项
1) 实现您自己的自定义分析器,删除StandardFilter并将ClassicTokenizer与小写筛选器一起使用。
标签:elasticsearch Lucene
tokenizestringtokenizeranalyzer
我使用的是elasticsearch版本1.2.1。
我有一个用例,在这个用例中,我想创建一个自定义标记器,它将根据标记的长度将其拆分为某个最小长度。例如,假设最小长度为4,则标记“abcdefghij”将拆分为:
“abcd efgh ij”
我想知道我是否可以在不需要编写自定义Lucene标记器类的情况下实现这个逻辑
提前感谢。对于您的需求,如果您不能使用,那么您需要自己编写一个自定义Lucene标记器类。您可以为其创建自定义Elasticsearch插件。有关如何为自定义分析器创建Elas
或者我误解了这个类的用法。查看下面的代码。。。(这是Scala版本,但应该很容易理解)
import org.apache.lucene.store_
导入org.apache.lucene.document_
导入org.apache.lucene.index_
导入org.apache.lucene.analysis.core_
导入org.apache.lucene.search_
val directory=new RAMDirectory()
val config=new IndexW
我使用的是elastic search 1.7.2,因为我想向现有映射添加新字段,我需要重新索引整个数据吗
Ex:
Mappings:
{
"properties":{
"a":{"type":string},
"b":{"type":string}
}
我希望使用模糊搜索进行搜索。使用来帮助我,如果我搜索一个有别名的单词(例如类似的单词),它会按预期工作:
但是,如果我输入的搜索词没有任何类似的词(如序列码),搜索将失败,我将不会得到任何结果,即使它应该是有效的:
我是否需要以不同的方式构建搜索?为什么我在第二次搜索中没有得到与第一次搜索相同的结果,但只有一个“术语”?您没有指定Lucene版本,因此我假设您使用的是6.x.x。
您看到的行为是Lucene模糊搜索的正确行为
请参阅并引用:
最多,此查询将匹配最多2次编辑的术语
这大致但不是
标签:elasticsearch Lucene
hibernate-search
下面是我的配置和代码。基本上,我正在尝试使用typeahead搜索从ES索引中获取记录。虽然单词搜索按预期工作,但仅在单个字段上工作,但多词搜索根本不工作
我的要求是在多个字段上搜索后,根据搜索到的单词获取记录。例如,如果我搜索一个名字“Jason K Smith”,查询应该在所有字段(姓名、地址、第二个姓名、姓氏等)上运行,因为搜索的文本可能在多个字段中。另外,如果我搜索两个名字,比如“Mike John”,结果应该包含两个名字的记录(我觉得这是可能的,我可能错了)
下面是我的代码:
prot
我正在寻找elasticSearch内的文档,这些文档不匹配一个或另一个品牌,但满足修复要求。我正在寻找任何不是来自丰田、宝马或奥迪的参赛作品。但是条目必须是超级条目(精确匹配)
以下是我正在处理的查询:
"query": {
"bool": {
"filter": {
"term": {
"superEntry": true
}
Couchdb在端口5984上运行,Couchdb lucene在端口5985上运行
我无法链接它们。请建议
我需要使用Lucene对图书数据库进行多字段级别的搜索
例如:我的搜索条件类似于:
(Author:a1 and title:t1) OR (Author:a2 and title:t2) OR (Author:a3 and title:t3)
其中,a1,t1等分别是作者姓名和书名。如何为这种条件构建Lucene查询对象
谢谢 以下代码假设a1、a2、a3、t1、t2、t3是术语。如果它们是短语,则需要使用PhraseQuery而不是TermQuery
// Create a B
我正试图为Lucene编写一个过滤器,类似于StopWordsFilter(从而实现TokenFilter),但我需要删除短语(标记序列)而不是单词
“停止短语”本身表示为一系列标记:不考虑标点符号
我认为我需要对令牌流中的令牌进行某种缓冲,当匹配完整短语时,我丢弃缓冲区中的所有令牌
考虑到Lucene的TokenStream这样的词流,实现“停止短语”过滤器的最佳方法是什么?我认为,你真的必须编写自己的分析器,因为某些词序列是否是“短语”取决于提示,例如标点符号,标记化后不可用。我得到了一个解
我正在使用Solr进行实时搜索索引。我的数据集大约有6000万个大型文档。我需要按时间排序,而不是按相关性排序。目前,我在查询中使用sort标志按时间排序。这对于特定的搜索很有效,但是当搜索返回大量结果时,Solr必须在返回之前获取所有结果文档并按时间进行排序。这很慢,必须有更好的方法
更好的方法是什么?显而易见的第一个问题:你的时间域是什么类型的?如果是字符串,那么排序显然非常慢tdate甚至比date还要快
另外一点:你有足够的内存来存储Solr吗?如果它开始交换,那么性能马上就糟糕了
第三
按照中的说明,我将自定义Lucene索引添加到Sitecore 6.3网站(或者我认为是这样):
在web.config的部分,我添加了我的索引定义:
由于master数据库已经设置了HistoryEngine(默认情况下),因此我没有进行任何额外的配置更改
我可以验证system索引是否正确填充,因为Sitecore桌面中的搜索应用程序能够找到项目,并且~/Data/index/master/system目录中充满了Lucene索引文件
但是,尽管自动创建了~/Data/indexes
我似乎不知道如何让Solr记录所有错误的Resests——基本上,每当出现错误的URL时,比如说,requesthandler上不存在的请求(如qt=unknownhandler),我都需要记录它
我可以在日志文件中看到Solr启动日志和异常日志,但不能看到坏请求
Im日志记录使用JDK4 java.util.logging,solr在内部使用slf4j和slf4j jdk,我的tomcat_dir/conf/logging.properties如下所示:
5SOLR.org.apache.ju
有没有办法获取的查询统计信息
session.Advanced.LuceneQuery<T> ()
session.Advanced.LuceneQuery()
像
session.Query().Statistics(RavenQueryStatistics)
是的,您可以这样做:
session.Advanced.LuceneQuery<T>().Statistics(out stats)
session.Advanced.LuceneQuery().Stati
调用writer.close()后,我可以(在Windows中手动)删除段文件,但不能删除与索引(.tvx、.tvf等)关联的任何其他文件。Windows说其他一些程序使它们保持打开状态,但是writer.close()应该关闭所有与Lucene相关的文件
我想删除Lucene文件夹中的所有文件,以防每次运行我的程序时它都存在。尝试使用lsof(在Linux上)或Process Explorer(在Windows上)查找哪个进程打开了文件。一旦您知道了这一点,您就可以跟踪文件保持打开状态的原因。
我需要能够使用Lucene全文搜索“abc”w/3“def”w/5“ghi”。我意识到我可以使用类似这样的近似搜索来近似“abc def ghi”~8。然而,我需要精确的精度,前两项在3以内,后两项在5以内。我能想到的唯一方法是搜索:
“abc def ghi”~8&&“abc def”~3&&“def ghi”~5。有没有人对如何解决这个问题有任何其他的想法,也许更有效?“abc def ghi”~8&&“abc def”~3&&“def ghi”~5与“abc”w/3“def”w/5“ghi
我已使用以下查询匹配所有文档
{
"query": {
"custom_score": {
"query": {
"query_string": {
"query": "*"
}
},
"script": "_score"
}
}
}
但不幸的是,我得到了下面的错误
{
"took": 1515,
"timed_out": false,
"_shards":
标签: Lucene
full-text-searchhibernate-searchproximity
我试图修改我的lucene应用程序,以便从HTML文件中进行全文搜索,但我也想获得最接近的锚
例如,如果我有以下HTML代码:
.......
<a name="1"></a>
<p style="font-size:12pt;text-align: justify;text-indent:30px;">
closest anchor i would like to find.
</p>
.......
<a name="2">
我对Lucene很陌生。我有一个带有字段ID、名称和国籍的表,所有字段都使用NGRAM分析器(2,2)进行索引。现在我需要从表中查询ID列表(比如12345和98765)。我该怎么做
我尝试了如下布尔查询:
BooleanQuery.add("ID:"12 23 34 45" ,Occur.SHOULD);
BooleanQuery.add("ID:"98 87 76 65" ,Occur.SHOULD);
因为索引是用Ngram分析器完成的,最大宽度为2。它获取列表并将其标记为2的集合,然后
我正在尝试删除带有节点自动索引中字段的节点。
当我尝试使用repository.delete(id)删除节点时。
紧接着,我试图通过其id获取已删除的节点,并得到以下异常:
java.lang.IllegalStateException: This index (Index[__rel_types__,Relationship]) has been marked as deleted in this transaction
at org.neo4j.index.impl.lucene.L
为数据库中的多个表创建的索引。在一段时间内,一对表的记录增加,一对表有数百万条记录。但最初它有数百条记录。所以,如果记录数增加,如何提高性能。
1) 我们是否需要将表从旧索引移动到新创建的索引
或
2) 增加现有索引的节点和碎片,从而提高性能
因此,我正在寻找更好的解决方案,如果我的要求不明确,请让我知道
P> >也许你应该考虑使用基于时间序列的索引,所以
您将为每一天或每月(或任何您需要的时间段)创建一个索引
然后你可以使用像
管理它们。你就这样
更灵活地处理旧索引,如关闭索引、删除索引
或
我正在运行以下查询,以在弹性搜索中提高精确匹配而不是多匹配。但是,没有得到预期的结果
我的目标是按以下顺序提升:“java开发者”>java和开发者>java或开发者
有人能帮忙解决这个问题吗?需要知道如何在此处增强match_短语,以及如何在match_短语中添加剩余字段
“查询”:{
“布尔”:{
“必须”:[
{
“多重匹配”:{
“查询”:“java开发者”,
“字段”:[
“头衔”,
“内容”,
“标签”,
“摘要”
]
}
}
],
“应该”:[
{
“匹配短语”:{
“标题”:“j
我的问题主要基于以下文章:
本文建议每个节点不要有多个碎片,原因有两个:
每个碎片本质上是一个Lucene索引,它消耗文件句柄、内存和CPU资源
每个搜索请求都将触及索引中每个碎片的副本。当碎片竞争相同的硬件资源时,会产生争用,而性能会降低
这篇文章提倡对写多读少的索引使用滚动索引
问题:
如果旧指数保持开放状态,Lucene指数的资源消耗问题是否会出现
在涉及多个索引和多个碎片的大时间范围内搜索时,是否会出现争用问题
搜索多个小索引与搜索一个大索引相比如何
我应该提到的是,在我们的特殊情
我有一个sitecore Lucene索引,当我搜索像“of,the…”这样的介词时,它什么也不返回,但是当我删除这些词时,我得到了正确的结果
以下是我的搜索
var innerPredict=predictebuilder.True();
foreach(关键字中的字符串键.Split(新字符[0]))
{
innerPredict=innerPredict.And(i=>i.Content.Contains(key));
}
var query=index.CreateSearchConte
我正在使用Luke向索引中的所有现有文档添加一个新字段。通过使用“重建和编辑”选项,我可以轻松地对一个文档执行此操作。但是,我想对所有文档一次性完成此操作。现在,我必须一个接一个地做。索引中有2000个文档。这将花费大量时间。尝试使用MatchAllDocsQuery获取所有文档并使用新的FieldInterest case更新它们,Field:例如,有没有机会使用solr的原子更新?尝试使用MatchAllDocsQuery获取所有文档并使用新的FieldInterest case更新它们,F
我正在使用以下设置和映射索引85000个文档:
PUT /ap_dataset/
{
"settings": {
"index": {
"store": {
"type": "fs"
},
"number_of_shards": 1,
"number_of_replicas": 1
},
"analysis": {
"analyzer": {
"my_english": {
"type": "english",
"stopwords_
我有一些以下格式的文件
文件1:
{
"_index": "myIndex",
"preferenceCount": [
{
"name": "apple",
"count": 1
},
{
"name": "mango",
"count": 1
},
{
"name": "apple",
"count": 1
上一页 1 2 ...
40 41 42 43 44 45 46 ...
下一页 最后一页 共 78 页