我使用的是Lucene.net,但我将这个问题标记为.net和Java版本,因为API是相同的,我希望在这两个平台上都有解决方案
我相信其他人已经解决了这个问题,但我没有找到任何好的讨论或例子
默认情况下,Lucene对查询语法非常挑剔。例如,我刚刚得到以下错误:
[ParseException: Cannot parse 'hi there!': Encountered "<EOF>" at line 1, column 9.
Was expecting one of:
"
我研究过,在ISYS(一个企业搜索引擎)中,EXCEPT是一个用于查询的布尔运算符。
如果这是除第二个查询之外的第一个查询------->检索到的文档必须包含第一个搜索项,但前提是第二个搜索项与第一个搜索项不在同一段落中。两个术语都可以出现在文档中;只是不在同一段
现在我如何在Lucene实现这一点
谢谢:)实施战略的大致轮廓如下:
在段落上标记您的输入
单独索引每个段落,其中一个字段引用公共文档标识符
使用来构造利用上述构造的查询
Lucene没有现成段落的概念。实现它是可能的,但可能需要一些
我想使用solr在搜索应用程序中实现拼写检查器组件。需要更改哪些配置?将以下部分添加到solrconfig.xml中
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<!--
Optional, it is required when more than one spellc
我正在设计一个应用程序,它将非常依赖于使用Lucene.NET存储库进行搜索。存储库将使用不断变化的操作数据库中的数据构建。我正试图找出保持Lucene存储库与源数据库同步的最佳策略。我是否应该运行一个每隔几分钟唤醒一次的服务,查询数据库中更新的记录,并从Lucene索引中添加/删除?我是否应该每晚重建Lucene存储库并容忍数据延迟
在Lucene存储库中保存数据的最佳实践是什么?不同的策略如何影响延迟、性能等?Lucene能够执行所谓的近实时搜索,这意味着索引的更新几乎可以立即在查询结果中看
我正在像这样索引neo4节点
BatchInserterIndexProvider indexProvider = new LuceneBatchInserterIndexProvider( db );
logger.info("indexer created :" + indexProvider);
BatchInserterIndex nodeIndexer = indexProvider.nodeIndex( "actors", MapUtil.stringMap("type", "exa
我使用以下链分析德语:
SimpleTokenizer->小写->停止字->解压->停止字-词干分析器
分解程序的类型是DictionaryCompoundWordTokenFilter。
由于我不懂德语,结果不太好
我的问题是:
1这条链一般会制造场景吗?特别是,我使用了两次Stop:before和afterdecomponer,以捕获前后的单词。对吗?
2显然,分解器的成功取决于词典的质量。请为解压器提供好的词典
问候,
我正在编写一个嵌入Lucene的应用程序,用于搜索堆栈跟踪的各个部分,包括类名等。例如,如果文档包含:
java.lang.NullPointerException
文档也可以包含普通英文文本
我希望能够查询NullPointerException或java.lang.NullPointerException并找到文档。使用StandardAnalyzer,我只有在搜索完整的java.lang.NullPointerException时才能得到匹配项
支持这一点的最佳方式是什么?我可以发出多个令
在我的测试中,当我试图从一个由termquery和通配符查询组成的布尔查询中获取命中率时,突然遇到了一个过多子句异常
我在网上搜索,找到了他们建议增加BooleanQuery.SetMaxClauseCount()的资源。
这听起来很可疑。。我该怎么做呢?我怎么能相信这个新的幻数足以满足我的查询?在所有的麻烦都爆发之前,我能把这个数字增加多少
总的来说,我觉得这不是一个解决办法。一定有更深层次的问题
查询是+{+companyName:mercedes+paintCode:a*},索引有大约25
朋友们
我是lucene全文搜索的新手。我已经开发了全文搜索页面。它工作得很好。但是现在我想添加额外的条件,比如where子句。怎么做
给我的要求是,我必须列出由登录用户创建的提案。我必须在后端添加此条件,而用户不知道
我听说过过滤器。哪个过滤器是正确的?如何应用。给我一个样品。今晚我有演示。帮助我。首先,在编制索引时,您需要确保将用户id添加到字段索引中的文档中,我们称之为用户id
在紧急情况下,您可以在将字段发送到查询解析器之前,向用户在后台输入的查询字符串中添加字段。因此,获取输入的任何查
我真的很纳闷,为什么它在索引过程中总是因为java.lang.OutOfMemoryError而消亡,即使它有几GB的内存
它需要手动调整配置文件/jvm参数,而不是仅仅计算出可用的内存量并将其自身限制在这一范围内,这有什么根本原因吗?除了Solr,没有其他程序有过这种问题
是的,每次发生这样的崩溃时,我都可以不断调整JVM堆大小,但这一切都太落后了
以下是最新此类崩溃的堆栈跟踪,以防相关:
SEVERE: java.lang.OutOfMemoryError: Java heap space
如果结果低于某个分数阈值,solr/lucene中是否有内置功能来过滤结果?假设我提供的分数阈值为.2,那么分数小于.2的所有文档都将从我的结果中删除。我的直觉是,通过更新/定制solr或lucene,这是可能的
你能告诉我怎么做的正确方向吗
提前谢谢 您可以编写自己的收集器,该收集器将忽略收集记分员放在阈值以下的文档。下面是一个使用Lucene.NET2.9.1.2和C#的简单示例。如果希望保留计算的分数,则需要修改示例
using System;
using System.Collectio
我面临着基于用户点击日志对Lucene结果进行排序的问题。我希望更多的访问结果放在第一位。有人知道如何在Lucene或Solr中配置或实现这样的属性吗
非常感谢。您可以在模式中声明一个可排序的整数字段(我们称之为clickNum),对于每个索引文档,默认情况下将其设置为零。
当用户打开文档时,您的应用程序会通过设置clickNum=clickNum+1来触发clickNum字段的更新
在查询端,您可以根据主排序参数(如果有)设置多个排序,然后单击num:
sort=+[,单击num+desc]
首先,我要说的是,我对JSR-170和Jackrabbit/Lucene一般来说都是新手
我有以下XPath查询:
//*[@sling:resourceType="users/user-profile" and jcr:contains(*/*/*,'sophie\-a')] order by @jcr:score descending
我有一个叫索菲·艾伦的用户和一个叫索菲·安妮的用户。使用上述查询进行搜索将返回零结果,其中单独搜索“sophie”将返回两个用户。我理解连字符在JSR-17
我是Lucene的新手。有没有办法让Lucene FVH返回以搜索查询为中心的片段/片段,而不是大致从搜索查询开始?还有,有没有办法告诉FVH片段分割程序只在换行符处进行片段分割?
谢谢 除了制作自己的frag builder AFAIK之外,没有一种纯粹的lucene方法可以做到这一点。但是,您可以为Solr提供一个正则表达式,指示片段的外观。看 Sujit Pal在他的Salmon Run博客上描述了如何创建自己的片段生成器:
此外,Grant Ingersoll在Lucid博客上发表了一篇
我是Lucene的初学者。我正在写一个搜索引擎来搜索我们的代码库中的某些关键词。我有一个需要你帮助的要求。假设我正在搜索一个词“苹果电脑”,我希望Lucene只抛出不区分大小写的“苹果电脑”行。但我看到的是,我看到的是有苹果电脑的生产线,只有苹果电脑的生产线和只有电脑的生产线。我如何过滤它以只获得包含apple和computer的行。如何查询Lucene?基本上,通过使用构建查询可以解决您的问题。
具体如何做到这一点取决于您的查询构造:对于默认查询解析器,您应该使用
+苹果+电脑
如果您以编程方
当我使用Luke V3.3.0时,它告诉我正在打开的Lucene索引是:
索引版本:13172b074a7
索引格式:-11(Lucene 3.1)
我使用的是Solr3.3,在索引之前我删除了我的文件夹/var/data/Solr/myrepository。我希望版本是Lucene 3.3。Lucene 3.1和Lucene 3.3之间没有指数变化?最后,我只想确保我的索引是使用Lucene 3.3创建的。任何获得Lucene索引版本的简单方法都是我想要的
此外,字段折叠也起作用,因此,如
是否有一种方法可以执行邻近搜索,该搜索不是以固定数量的标记为界,而是以2个某种标记标记为界?例如,要实现作为单个句子或段落限定在内部的邻近查询?很明显,分析器必须支持它,但是这以前做过吗?如何做?是一个抽象类,它定义了一个span查询,用于检查
匹配的跨度通过位置检查。具体实现包括检查匹配是否在定义的位置范围内的SpanPositionRangeQuery,以及检查匹配位置的有效载荷是否与请求的相同的SpanPayloadCheckQuery
也许您可以通过为每个标记分配一个有效负载,指示它属于
我知道,有couchdb lucene,但我在神奇的Irishoch上托管,我不能真正安装插件。还有其他选择吗?什么样的设置最简单、最透明,并且允许我继续使用CouchDB的强大功能,而不用担心搜索层
考虑事项:我有大约800万个文档,因此创建一个特定的视图来显示每个文档中的每个单词并不是非常有效。我认为elasticsearch插件将满足您的需要。它不需要CouchDB端的任何配置——您需要做的只是在elasticsearch节点上执行非常简单的设置。但是您仍然需要安装插件吗?我使用的是一个沙
标签: Lucene
elasticsearchn-gram
我想使用ElasticSearch搜索文件名(而不是文件内容)。因此,我需要找到文件名的一部分(精确匹配,无模糊搜索)
示例:
我有以下名称的文件:
My_first_file_created_at_2012.01.13.doc
My_second_file_created_at_2012.01.13.pdf
Another file.txt
And_again_another_file.docx
foo.bar.txt
现在我想搜索2012.01.13以获取前两个文件。
搜索文件或文件应返回
据我所知,为了执行涉及“相关性得分”的“模糊”查询,它必须迭代并计算所有可能匹配项(可能包括数千或数百万行)的相关性,即使查询的“限制”仅为“10”
Elasticsearch如何在提供合理响应时间的同时实现这一点?一种可能性是,在获得足够的结果后,搜索过程可以终止,即使结果不是最高分。因此,并非所有的结果都需要计算。在Lucene 4中,模糊搜索会删减搜索空间,而不是像以前那样强制执行:
希望ElasticSearch将很快更新到Lucene 4
之前,我使用一个索引将所有数据从mysql索引到elasticsearch。现在我转向了批量api,因为它让我可以在将数据索引到elasticsearch之前自由地操作数据。但是与jdbc river的3M记录相比,使用tire bulk api的索引过程需要花费大量的时间(4倍)。有没有办法使索引过程更快、更高效?IMHO,关键是JDBC河是在Elasticsearch内部启动的。因此,在JDBC请求之后,数据将存储在内存中并直接发送到ES
使用外部进程,您可以多跳一次网络
也就是说,降低4倍
我注意到,如果我搜索某些短语,Tridion Content Manager会给我以下错误
Unable to get the list of search results.
Unable to process the Search Request. Invalid search query: (*out*) AND RepositoryId:tcm\:0\-4\-1 AND OrganizationalItemAncestorIds:tcm\:*\-135625\-2. maxClauseCo
我正在通过JSON查询一个Lucene索引,但我不知道如何指定返回的结果数量和搜索结果的偏移量(如“从文档10开始”)。我猜是这样的
{
"fields" : ["foo","bar"],
... // STUFF GOES HERE
"query": { ... }
}
作为补充说明,如果有人能告诉我像这样使用Lucene的文档在哪里,而不是Java API(每个搜索结果都链接到Java API),我也会很感激的。您正在寻找From和Size参数。因此,从第十页开始检索10个文档
有没有办法根据特定字段的长度过滤ElasticSearch文档
例如,我有一堆字段为“body”的文档,我只想返回body中字符数大于1000的结果。有没有一种方法可以在ES中执行此操作,而不必在索引中添加长度为的额外列?使用脚本过滤器,如下所示:
"filtered" : {
"query" : {
...
},
"filter" : {
"script" : {
"script" : "doc['body'].
我有一个有2个节点的ElasticSearch集群,对于一个特定的索引,我只希望数据分配到其中一个节点,而不是另一个节点
如何在配置中指定此选项?或者,当我实际向索引数据发送命令时,是否有办法将其路由?可以使用该机制完成。可以使用该机制完成。可以使用该机制完成。可以使用该机制完成
我正在为一个通过umbraco设计的网站开发搜索功能。我正在使用检查获取搜索结果。这是我的密码:
var Searcher = ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"];
var searchCriteria = Searcher.CreateSearchCriteria(BooleanOperation.Or);
var query = search
我正在尝试开发一个应用程序来检查HTML页面中的单词密度。我精通Java,但从未使用过Lucene。你认为用Lucene做这个用途可行吗?或者HTML页面中包含的标记元素会导致无效搜索?欢迎任何建议
谢谢 明智的做法是去掉HTML标记,只对内容进行索引。这在以前是有过的。我建议使用(我们使用它的另一个目的,但很高兴,它也提到了参考SO后),但YMMV
我正在使用Lucene建立一个标记共现的大索引(例如,[大象,动物],[甜瓜,水果],[宝马,汽车],…)。我使用BooleanQuery查询这些共现的索引以获得绝对计数,这两个标记在我的索引中共现的频率如下:
// search for documents which contain word+category
BooleanQuery query = new BooleanQuery();
query.add(new TermQuery(new Term("word", word)), Oc
我有两个表,其中一个表有巨大的网站文本(不是html)数据(15gb)。我想索引这10个表(具有关系)。
例如:从表1 a、表2 b中选择a.id、a.title、a.ipaddress、b.content,其中a.id=b.id
这里的问题是,从oracle数据库检索数据进行索引需要70-80个小时。我尝试了服务器端分页,比如rownum>1和
是否可以使用两个索引的组合检索数据
是的,可以从两个索引检索数据
为每个索引打开一个IndexReaders。叫他们reader1和reader2。然
我看到的关于如何查找IndexSearcher返回的匹配位置的各种示例要么需要检索文档内容并搜索令牌流,要么需要索引术语向量中的位置和偏移量,将查询转换为术语并在术语向量中查找。
但是当我使用模糊查询时会发生什么呢?是否有办法知道hit中哪些术语完全匹配,以便我可以在本文档的术语向量中查找它们
如果这有任何价值,我对Lucene是新手,我的目标是用一组术语注释一组文档(在Lucene中索引的文档),但是这些文档来自扫描文本,包含OCR错误,因此我必须使用FuzzyQuery。我曾考虑使用luce
我似乎对更新内容项的IntervalAsynchronous策略有一些问题
有时,索引不会使用此策略自动更新,需要手动重建索引
以下是相应的日志文件条目:
8404 09:20:24信息[Index=artscentre\u web\u Index]intervalAsynchronousUpdateStregy正在执行。
8404 09:20:24信息[Index=artscentre\u web\u Index]历史引擎为空。增量重建返回
8032 09:20:21警告[Index=arts
在我的数据库中,我有一个大约有10列和1000多万行的表。一列最多包含1000个字符。现在我需要做一些搜索,比如“%cat%dog%”。我不想做任何复杂的事情。但是当我在红移模式下运行这个程序时,根据我所做的工作,大约需要1秒到10秒的时间才能给出结果。是否有其他选项可以将此数据存储到(如索引文件)中,以便在不到200毫秒的时间内获得结果。我在调查露辛,但我不太相信。有人知道我正在研究的提供该功能的服务吗 Google BigQuery可能是您的一个选择。您可以使用REGEXP\u MATCH,
在我的Neo4j应用程序中,我有一个产品实体,其中包含名称和描述字段。这两个字段都用于Lucene上的传统索引
Product.name是一个简单的文本,这里没有问题,但是Product.description可以包含HTML标记和元素
现在我使用StandardAnalyzer(Version.LUCENE_36)作为索引。我应该使用什么分析器来跳过所有HTML元素
如何告诉Neo4J Lucene索引不要在Product.description中使用任何HTML元素?我只想给单词编索引
更新
我正在构建一个应用程序,希望使用wiktional单词和定义作为数据源。在我的查询中,我希望能够搜索所有Wiktionary条目,这些条目在标题或定义中类似于用户提供的术语,但也有以指定后缀(或一组后缀之一)结尾的标题
例如,我想查找所有包含单词“大狗”的Wiktionary条目,如下所示:
但进一步过滤结果,只包含标题以“d”结尾的条目。因此,在这个例子中,“博阿胡德”、“圣伯纳德”和“释放”将被返回
MediaWiki搜索API是否可以实现这一点?您有什么建议吗?这在ElasticSear
标签:elasticsearch Lucene
tf-idfcosine-similarity
我试图破解elasticsearch响应中的explain API。但是有点迷路了。这对我来说有点难理解。是否有任何简单的指针或链接可以更具体地解释JSON?我对TF、IDF和VSM中的余弦相似性有一个了解。但更具体地说,需要一些关于JSON的指针。如果我能找到一个简单的数学表达式来解释这个JSON,那将是一个理想的选择
{
"_explanation": {
"value": 7.937373,
"description": "sum of:",
"details"
我正在对我创建的ES索引执行查询。查询由两个术语组成,在返回的文档列表中,我看到一个文档的排名高于另一个文档。尽管第一份文件只包含这两个术语中的一个,而后者包含这两个术语
我使用Explain API查看分数是如何生成的,我发现对于同一术语“温度”,IDF的计算方式不同。这不是预期的,因为idf仅取决于索引中包含术语的文档数和文档总数。此外,我的索引在任何时候都不会被更改
这些是两个Explain调用输出的摘录。其中包括以色列国防军:
文件1:
文件2:
为什么IDF不同?我猜你有不止一个碎片,
我是lucene的新手,我正在尝试理解细分合并过程。我遇到了optimize方法(它将合并该实例中所有可用的Lucene索引段)。
我的确切问题是,优化是否合并了所有级别的细分并创建了一个复杂的细分?
Lucene最新版本中的替代方案(如Lucene 6.5)?
在索引过程之后始终调用优化方法是否好,这样我的索引将始终有一个段,搜索速度将更快?首先,不需要总是将段合并为一个段。可以对其进行配置。原则上,合并段/优化索引的想法来自于Lucene中删除的实现。Lucene不删除文档,而是将它们标记为
我已经使用elastic实现了一个搜索。下面是我的分析配置
$aAnalizerArray = [
"edgeTokenizer" => [
"tokenizer"=>"edgeTokenizer",
"filter" => [
"word_delimiter_graph",
"lowercase",
"unique"
,然后在索引中设置。您可以添加多个“名称”属性设置为相同值的字段,然后将搜索这些字段以查找该文档,就像您刚刚将这些术语的并集添加到该字段名下的文档一样
var field1 = new Field("Text", "aquaculture");
var field2 = new Field("Text", "fish");
field1.setBoost(1.0f);
field2.setBoost(2.0f);
var doc = new Document();
doc.AddField(fi
我试图对搜索结果应用过滤器,我可以成功应用“精确匹配”过滤,但我试图理解为什么我试图对字符串字段使用TermRangeQuery,但我没有得到任何结果。e、 g.给定此索引(我在下面的示例中使用布尔查询,因为我最终希望应用一组过滤器)
我可以查询苹果的确切匹配项
Using reader As IndexReader = IndexReader.Open(directory, True)
Using Searcher As New IndexSearcher(reader
我有一个问题,有人怎么能像我们在lucene中那样通过下面的方法得到术语频率
DocFreq(新术语(“字段”、“值”));使用solr/solrnet。尝试或。SolrNet目前不支持这些功能,因此您可以解决这些功能,也可以实施这些功能并将其贡献给项目。+1供投稿人参考。实际上,我会看看你的SolrNet()项目。
我将Lucene 3.3.0与java一起使用。我面临以下问题,不知道是否有解决方案
我使用StandardAnalyzer为以下文本编制索引:“这个男孩玩得很努力,赢得了比赛”,然后我使用“play”进行查询搜索。。。Lucene仅在使用WildcardQuery builder时才查找命中率
问题是,当我尝试搜索“男孩游戏”时,它找不到任何点击
有没有办法让Lucene做一些类似上下文搜索的东西来解决这个问题
谢谢,
萨梅尔
private static void addDoc(IndexW
我试图构建一个查询来搜索带有名称变体的Lucene名称索引。
该索引是使用Lucene.NET 2.9.2版构建的
用户输入例如“Margaret White”。
如果没有名称变量选项,我的查询将变为“Margaret White”~1,并且可以正常工作
现在,我可以根据名字和姓氏查找名字变体,以生成扩展列表。
在这种情况下(我只举一些例子,因为列表有时可能是100或更多),我们可以
玛格丽特/玛格丽特·怀特/怀特
查询“margrett white”~1或“margaret white”~1或
我为日志创建了一个Lucene索引,其中每个日志记录都是一个文档。每个文档都有一个编码为数字字段的时间戳。创建索引和查询索引工作正常,但有一件事我没能做到,那就是在需要显示时从文档中提取时间戳。在线Lucene文档说我需要使用Fieldable来检索数字字段,但我不知道如何从Fieldable获取数字字段
有人能给我举一些文档或者更好的例子吗
谢谢 我想这应该管用,你试过了吗
NumericField num = (NumericField) theFieldable;
标签: Lucene
lexical-analysishunspell
我想用lucene使用拼写词干分析器解析文本文件,以检查拼写错误。我将使用拼音词典,这就是为什么我想使用拼音词干分析器
此时,我不确定应该如何解析文件并进行检查
我是否可以使用带有WordFilter的标准分析器来索引文件中的文本,并逐项检查字典中是否存在关键字
我这样做了,它也起作用了,不确定这是最佳解决方案,但如果我想通过word not present输出3-5条建议,我不知道该怎么办
当我使用PlainTextDictionary时,我可以使用IndexerSearch,但我不知道如何使
我正在考虑优化我的一项指标:
文档没有提到优化索引是否会干扰当前的导入过程。它是阻止导入,还是只影响导入的效率?在优化索引时,您仍然可以为文档编制索引。但请确保您确实需要进行优化,因为这是一项非常昂贵的操作,在此过程中,索引大小将增长到初始大小的两倍,因为索引将被重写为新的段。这就是为什么要进行优化操作,因为优化某种程度上让人们认为每天或每周运行一次可以获得一个健康的指数。事实并非如此;相反,只有当您有一个要归档的索引,而不再为文档编制索引时,才可以运行优化
如果像你说的那样,你计划在索引的同时
我想把我的单词拼凑起来,但不想拼凑任何标点符号,比如逗号或点。我怎样才能做到这一点
我目前的连锁店是:
TokenStream tokenStream = new StandardTokenizer(LUCENE_VERSION, new StringReader(input));
tokenStream = new StandardFilter( LUCENE_VERSION, tokenStream );
tokenStream = new LowerCaseFilter(LUCENE_V
我是新来的。只是想了解有关可用于couch db/Big couch/(或任何其他集群NoSQL数据库)以进行有效全文搜索的索引方法的解释。除了Lucene、Elastic Search和Solr之外,在对海量TB数据进行全文搜索时,最有利的搜索方法是什么?背后的原因是什么
此外,在谷歌上,我意识到coach db是未聚类的。最终,BigCoach被建立起来,这就是集群数据库。有没有更好的数据库技术来确保对海量TB数据的群集管理
我正试图编写一个lucene查询来过滤RavenDB中的一些数据。此特定集合中的某些文档分配了一个序列号,并且有效范围不是连续的(例如,一个范围可以是100-200,另一个范围可以是1000-1400)。我想使用Raven Studio(v2.5,Silverlight客户端)查询RavenDB,以检索所有值超出这些用户定义范围的文档
这是过于简化的文档结构:
{
ExternalId: something/1,
SequentialNumber: 12345
}
为了测试,我
标签:elasticsearch Lucene
elastic-stack
我们使用麋鹿堆进行记录。我被要求设计一个程序来删除意外记录的敏感信息
根据我对ElasticSearch(Lucene)如何处理数据的阅读,现在索引中仍然没有数据。它最终会随着索引的合并而被清理,等等
是否有运行更新(修订某些内容)或删除(删除某些内容)并保证其删除的流程 更新或删除某些值时,ES会将当前文档标记为已删除,并为新文档编制索引。已删除的值仍将在索引中可用,但不会从搜索中返回。当然,如果有人能够访问底层索引文件,他可能能够使用某种工具(或类似工具)查看索引文件中的内容,并可能查看已删
上一页 1 2 ...
17 18 19 20 21 22 23 ...
下一页 最后一页 共 78 页