我们公司有数千份PDF文档。我们如何使用Lucene、Solr或Nutch创建一个简单的搜索引擎?我们将提供一个基本的Java/JSP网页,人们可以输入单词并执行基本的和/或查询,然后向他们显示所有匹配PDF的文档链接。如果您有Linux服务器,您可以使用它来索引它们,然后只使用它附带的搜索功能。它有一个(实验性的)web搜索界面,也可以连接到FireFox搜索框中
它会自动为包含的文件编制索引,我想你会发现,增强或修复beagle比为Lucene编写自己的搜索界面要高效得多。在这个论坛上回答如
我正在为一个小项目使用lucene 3.0.2框架。我需要在相关文档(多个)上创建新查询,并进行与所选文档更相关的新搜索
到目前为止,我已经将用户标记的所有文档添加到ArrayList,然后创建了一个ArrayList,其中包含了为我创建的更像.like(docId)的查询
现在,有了这些来自相关文档的新查询,我需要以某种方式合并它们。问题是,查询不能转换为BooleanQuery,我找到的唯一合并查询的方法是Query.mergeBooleanQueries,而仅仅是查询
有什么建议吗?:)
当我在Lucene中搜索查询时,我收到一个文档列表作为结果。但是我怎样才能在这些文件中找到这些信息呢?我想访问这些单词的有效负载,它在查询中找到
如果查询只包含一个术语,则只需使用TermPositions即可访问该术语的有效负载。但是如果您有一个更复杂的查询,包括短语搜索、邻近搜索。。。您不能只在TermPositions中搜索单个术语
我希望收到一个列表、令牌流或类似的东西,其中包含查询找到的所有令牌。然后我可以遍历列表并访问每个令牌的有效负载。我想您应该先看看Lucene荧光笔,因为它突出
是否可以将Lucene索引中所有术语的列表提取为字符串列表?我在文档中找不到该功能。谢谢 Lucene 3:
C#:
爪哇:
IndexReader indexReader = IndexReader.open(path);
TermEnum termEnum = indexReader.terms();
while (termEnum.next()) {
Term term = termEnum.term();
System.out.println(term.text
我希望在我的查询的第二部分中有一个while data not null的结果列表。我发现如何在solr中实现这一点,但在lucene中没有。
有人有主意吗
谢谢
字符串:
(字段1:搜索和字段2:3000)或(字段3:搜索和字段2:3000和非空字段1)
查询:
+第一区:搜索+第二区:3000
+字段三:搜索+字段二:3000-字段一:空
*:* -MY_FIELD_NAME:[* TO *]
上面应该可以做到,注意Lucene的*:*
*:* -MY_FIELD_NAME:[* TO
标签: Lucene
full-text-searchelasticsearchfaceted-search
我试图通过在config/elasticsearch.yml文件中设置index.cache.field.max_size:NUMBER来限制字段缓存(常驻)。我有大约100万条记录,在7个字段(所有字段都包含大量文本数据)上执行刻面操作,以构建一个“字云”
无论为index.cache.field.max_size指定了什么值(1000或100000),堆内存(已分配15gb)都会一直被占用。我做错了什么?
还有没有更好的方法来构建单词云,而不是对如此大量的文本数据执行面处理
映射:
cur
我正在lucene.Net中存储数据
我添加了一个包含多个字段的文档:
var doc = new Document();
doc.Add(new Field("CreationDate", dt, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("FileName", path, Field.Store.YES, Field.Index.ANALYZED));
doc.Add(new Field("Directory",
我在有关联子对象的文档上有一个Lucene索引。我的文档(小部件)中的数据可以被认为是这样的:
Name = "Cool Widget"
Todo = { Description = "Invent", Due = "1/18/2014" }
Todo = { Description = "Manufacture", Due = "2/17/2014" }
我希望能够搜索在给定日期范围内具有特定描述的待办事项的小部件。(如下周到期的“发明”待办事项)
如何构建Lucene索引和查询来实现这一点
我试图用Lucene 4.6.1实现横向搜索。
以下代码可以正常工作:
DrillSideways ds = new DrillSideways(searcher, taxoReader);
FacetSearchParams fsp = new FacetSearchParams(getAllFacetCounts());
DrillDownQuery ddq = new DrillDownQuery(fsp.indexingParams, mainQuery);
List<Cate
考虑索引中的两个文档,如下所示:
{
"_index": "32",
"_type": "places",
"_id": "_FqlAzzSRN6Ge_294D5Mwg",
"_score": 1,
"_source": {
"name_3": "xxxx",
"id_3": "xxxxx",
我按照ElasticSearch网站上的教程上传文档(John smith、Jane smith等)。当我使用URI搜索查询索引时,结果是相关的。但是当使用请求体进行任何类型的匹配查询时,它会返回所有文档,每个集合的_分数为1,即没有任何相关性。请帮忙
$ curl -XGET localhost:9200/megacorp/employee/_search {"query":{"match":
我需要查看完整的请求才能完全理解您的问题,但您似乎在请求中使用GET作为方法
为了向Elastic
我正在Lucene中构建具有多个字段的文档,这些字段的范围值如下:
(项目、价格):
(A,2-5),
(A,第10-12段),
(B)第15至20条,
(B,80-91)
我可以根据名称区分项目和项目值。例如,对于项目A,我的lucene字段名将是“itemA”,而对于B,则是“itemB”。如何为lucene中的不同范围编制索引
我正在使用Lucene 5.4,最近想将一个项目迁移到spring框架
如果在java主函数中调用索引代码,则不会出现错误,但在Tomcat9.0上部署代码时,会出现以下错误。WEB-INF/lib文件夹有四个Lucene jar,分别是Lucene-core-5.4.0.jar、Lucene-facet-5.4.0.jar、Lucene-querys-5.4.0.jar和Lucene-queryparser-5.4.0.jar。我认为这四个JAR对于文档索引应该足够了,对吗?另外,我正在使用l
我正在对Elasticsearch索引进行搜索查询。有时,我想要求一个术语出现。为了解决这个问题,我一直在阅读有关“+”的文章。然而,我对此有点困惑
我不明白AND(&&)操作符和短语operator(“)在哪里合适。例如,假设我有一个动物搜索索引。想象一下我想找到狐狸。它是怎么回事
brown+fox不同于brown&&fox不同于“brown”和&“fox”。在我的理解中,它们非常相似。我理解后两者的区别。然而,就我的一生而言,我不理解为什么我会使用“+”操作符
感谢您的帮助
就我而言,我不
标签:elasticsearch Lucene
stop-words
如何全局定义自定义停止字列表,使其可以从所有索引访问
最好像使用预定义的特定于语言的停止词列表一样使用此停止词列表:
PUT /my_index
{
"settings": {
"analysis": {
"filter": {
"my_stop": {
"type": "stop",
"stopwords": "_my_p
我们使用existdbbase存储各种xml文档,并使用xquery在这些文档上执行搜索。这是xml文档的示例:
雌鹿
约翰
eXist db的全文搜索索引构建在。这个问题在Lucene bug tracker(请参阅)和基于它构建的其他产品(如ElasticSearch(请参阅))中报告过,并且在Lucene 5.3中使用进行了修复
为了使eXist从这一改进中获益,eXist需要将其Lucene库从eXist当前版本Lucene 4.10.4升级到Lucene 5.3或更高版本。到目前为
标签:elasticsearch Lucene
aggregation
我对ElasticSearch 5.6.3上的嵌套文档聚合有问题
我的查询的结构如下所示:
query
aggs
|_filter
|_nested
|_term
|_top-hits
如果我尝试在非嵌套字段上进行聚合(当然删除了嵌套的agg),那么一切都会按预期进行。但由于现在的结构,我收到了Lucene的一个例外:
子查询不能与具有父筛选器的相同文档匹配。将它们组合为必需子句(+)以查找问题文档。docId=2147483647,class
有些文章是分几个部分写的,
例如,我从IBM developer works获得了以下文章:
分布式数据处理
Hadoop,第1部分:入门
分布式数据处理
Hadoop,第2部分:更进一步
分布式数据处理
Hadoop,第3部分:应用程序
发展
我将分别为这三篇文章编制索引。如果有人搜索某个关键词,那么第3部分可能在命中率的顶部,而第1部分在第32部分。因此,如果我逐页列出结果,part1和part3将显示在不同的页面上
如何确保同一系列中的命中文档一起显示
我想在SQL中,我们可以使用“分组方
我们正在使用搜索模型开发web应用程序
在搜索servlet中,它从客户端捕获请求参数,然后构建一个hibernate搜索查询进行搜索
现在的问题是客户端的参数是可变的
我们接受的所有参数如下所示:
1) 关键词
用于搜索的关键字,即使仅传递此参数,也可以处理搜索请求
有效示例:
/search?keyword="test"
/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30
/search?low
对不起,这个问题很简单,但似乎没有任何明显的方法。根据文档,建议在内存中保留一个IndexWriter实例,可以反复用于更新,而不是每次更改都打开和关闭一个实例(成本要高得多)
但是,文档中还指出,如果发生异常(例如,OutOfMemoryException),则应关闭IndexWriter)
因此,我需要某种方法来检查我的IndexWriter实例是否有效,假设它可以被其他操作关闭
我意识到,如果在关闭时尝试使用它,我会遇到异常,但我不是失败,而是想检查是否需要在需要之前创建一个新的Index
lucene中的标准分析仪等同于
Select * from table where name Like raaga
它会只搜索完全匹配的数据吗?简短的回答是:不会。
你在比较苹果和桔子。
这是。
下面是一个为分析器/查询解析器/搜索提供一些上下文的示例。分析器用于查询搜索阶段的查询标记化。它还用于所分析字段的标记化阶段。
您的搜索将取决于您正在运行的查询类型
如何按以下顺序(查询短语,字母顺序)对搜索结果进行排序。举个例子,如果索引中有文档,每个文档都有一个字段(foodname)。这些文件的食品名称是
肥鸡
鸡脯
鸡肉千层面
如果我用搜索词“chicken”进行查询,我希望我的结果按以下顺序排列
鸡脯
鸡肉千层面
肥鸡
请注意,所有这些文档的增强因子在索引阶段是相同的。谢谢你的帮助
谢谢
-Venu我将简要介绍一下我将要做的事情。考虑使用食物配料/菜谱类型字典并在索引中分配更高的助词,以匹配食物词典中的项目。也许更进一步,在你的食物字典中为某些关键
我刚刚开始玩Solr,我已经在Tomcat上部署并运行了它。我已经设置了模式和数据导入处理程序,它对文件进行了索引。现在我想安排这个dataImportHandler每小时左右运行一次
有一个wiki页面详细介绍了这些文件
但是没有关于在何处创建文件以及如何部署文件的说明
以前也有人问过类似的关于堆栈溢出的问题
答案是“创建类ApplicationListener、HTTPPostScheduler和SolrDataImportProperties”。我不知道应该在哪里创建类。但是我猜了一下,下
标签: Lucene
fieldfaceted-search
我正在读这篇文章
作者没有说明Lucene是否支持在每个字段中存储多个值
按照本文中的示例,一本书可能有多个流派和多个作者
是否可以在流派字段中存储多个流派
是否也可以使用多个类型或多个作者执行搜索?如果匹配一个或多个查询类型并匹配一个或多个作者,则结果应返回文档
谢谢
Vu Dang这是一篇关于分面搜索的文档
及其用途
核心Lucene不支持多值分面查询,但这些扩展项目支持:
我试图使用双变音作为重复检测的分析器之一。下面是我的模式的样子
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignore
以下节目:
import java.util.Arrays;
import java.util.List;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.util.V
有没有可能为lucene提供一个复合词列表,用于文本索引
例如,我希望将“计算机信息”作为单个单词进行索引
我可以将“计算机信息”转换为“计算机信息”或“计算机信息”,但这种转换非常困难,问题在于:
我使用令牌过滤器来完成此操作,您可以使用它。这正是@jpountz所描述的。使用令牌过滤器可以实现这一点,该过滤器会将最后处理的令牌保存在内存中,但您需要注意的是,这种令牌不会与标准的Lucene查询解析器一起工作,因为它在分析之前首先对空白进行拆分。你能描述一下你的目标是什么吗,也许其他方法也可以
我有一个查询,如果找到匹配项,但没有实际选择文档,我想使用某个字段来提高文档的分数
所以如果我有
文件1
id:foo
烟雾:没错
城市:阿姆斯特丹
文件2
身份证号码:到
冒烟:错
城市:阿姆斯特丹
文件3
id:酒吧
烟雾:没错
城市:鹿特丹
我想选择所有文档,其中+smoke:true,但阿姆斯特丹结果排名更高
我想做
+烟雾:真实城市:阿姆斯特丹^1.5
但我发现,在这种情况下,在smoke:false和city=Amsterdam的位置也会选择文档。您的查询应该有效-结果中必须出现一个
我正在使用bobo浏览API。它支持zoie进行实时索引。Zoie在内部使用lucene。我试图创建索引,但遇到以下错误。任何帮助都将不胜感激
Zoie verison 3.0.0.
Lucene 2.9.2
OS : windows 7 64bit
26 Jan 2013 20:50:34,352 ERROR proj.zoie.impl.indexing.internal.RealtimeIndexDataLoader@39bc2399 proj.zoie.impl.indexing.in
ElasticSearch版本:0.90.2
问题是:我想在索引中查找文档,以便它们:
在多个字段中匹配所有查询标记
使用字段own分析器
因此,如果有4个文件:
{ "_id" : 1, "name" : "Joe Doe", "mark" : "1", "message" : "Message First" }
{ "_id" : 2, "name" : "Ann", "mark" : "3", "message" : "Yesterday Joe Doe got 1
映射/分析器的定义方式影响查询的排序?默认情况下,它们按分数排序,分数是使用tf idf算法计算的(默认情况下也是如此),记录在Lucene的。您可以自己指定排序条件,请参见
我们有一个非常基本的Lucene设置。我们最近注意到有些文档没有写入索引
这是我们创建文档的方式:
private void addToDirectory(SpecialDomainObject specialDomainObject) throws IOException {
Document document = new Document();
document.add(new TextField("id", String.valueOf(specialDomainO
确定相关性和结果截止点的最佳方法是什么
所以我现在正在研究的系统包括搜索库存并返回结果。每个结果都必须由员工审核,以确定是否为真实匹配。显然,我们希望尽量减少返回的错误结果的数量
我一直在调整助推器和其他东西以使其得分更好,但我们在确定相关性方面仍然有一些问题
绝对阈值不起作用,因为搜索分数仅相对于给定查询中的结果有意义。因此,一个查询的分数为200可能与另一个查询的分数为0.2不太相关
我见过的另一种方法是相对于查询的最高分数进行标准化的分数。然后我们可以返回所有在该分数x%以内的结果。但是,
我正在使用elasticsearch搜索项目,现在我希望能够搜索给定国家的城市和城镇
我已经加载了一个包含以下信息的SQL数据库(这里是示例数据)
关于这一点,有几个问题:
我可以把它加载到elasticsearch中,把它转换成地理编码器吗
这是否意味着搜索位置需要两个查询,一个是地理编码,另一个是坐标搜索
是否有任何插件,我应该使用,而不是我可以使用自己的数据
结帐。这是一个基于ElasticSearch的开源地理编码器。这是一个基于ElasticSearch的开源地理编码器。这是一个基于E
使用Elasticsearch,我在索引中添加了一个名为“pets”的文档,如下所示:
{
"name" : "Piper",
"type" : "dog"
}
然后我添加了第二个文档:
{
"name" : "Max",
"type" : "dog",
"breed": "Scottish Terrier"
}
现在,我知道我的“pets”索引的映射最初是基于我的第一个文档创建的(除非我在某个时候定义了映射)。但是,我很想知道ES是否可以基于现有数据
我知道CouchDB可以用于本地开发应用程序,并在登台/生产中切换到Cloudant。本节也介绍了这一点
但是如何开发需要Cloudant的lucene搜索的应用程序功能呢?有没有办法在本地模拟它?已经有一个库可以将ApacheLucene引入CouchDB。但老实说,我不希望它能与Cloudant一起工作,因为很可能他们在CloudantDB和ApacheLucene之间建立了自己的桥梁。Dmi,我对Cloudant没有太多经验。但是,根据CouchDB-Lucene,我们可以在本地模拟它,根
我有一本书:
@Entity
@Indexed
public class Book extends BaseEntity {
@Field
private String subtitle;
@DateBridge(resolution = Resolution.DAY)
private Date publicationDate;
@Field
private int score;
@IndexedEmbedded
@ManyToMany(fetch = FetchType.EAGER)
@C
我正在使用lucene为具有名为“city”的多值文本字段的文档编制索引。
对于该字段,每个文档可能有多个值,如la、los angeles等
假定
document d1 contains city = la ; city = los angeles
document d2 contains city = la mirada
document d3 contains city = la quinta
现在,当我搜索“la”时,我更希望得到d1,因为它有精确的匹配项,即,与查询中的匹配项相比,
标签: Lucene
wildcardfuzzy-searchscoring
我正在使用ApacheLucene,目前正在尝试将模糊和前缀(或通配符)查询结合起来,以实现一种建议机制
例如,如果查询是levy,则还应返回包含levinstein的文档
由于Lucene中似乎没有这种内置查询,所以我搜索了解决方案并使用了这里建议的方法
,将查询创建为两个自动机的组合(第二个应答)
这确实很有效,但现在的问题是没有得分。所有结果的结果均为1.0。我真的希望“Levy”的排名高于上一个示例中的“Levninshtein”
顺便说一句,我试着以FuzzySugster的形式使用L
我所问的可能有一个名字,它与贝叶斯统计有关
我有一个街道地址数据库,我正在使用Lucene匹配用户输入的地址(如果你需要一个类比,假设我为谷歌地图工作)
考虑到“西北大道”和“西北岸大道”都是有效的街道名称,在搜索“1000^0.001西北大道”时,我如何使Lucene的“2000西北大道”得分高于“1000西北岸大道”
1000^0.001意味着,数字应该用来打破平局,但如果不这样,匹配街道名称比匹配正确的数字和错误的街道更重要
不幸的是,在本例中,1000^0.001导致错误匹配(北岸)超前
我正在为Elasticsearch中的英国地址构建一个地址匹配引擎,并发现木瓦非常有用,但在标点符号方面,我发现了一些问题。查询“4 Walmley Close”将返回以下匹配项:
3号和4号机组,Walmley Chambers,3号Walmley Close
Walmley Close 10号Walmley Court 4号公寓
合作零售服务有限公司,4 Walmley Close
真正的匹配是3号,但是1号和2号都匹配(错误),因为它们都变成了“4 walmley”。我想告诉瓦片分析器不要
如果找不到点击率,我会在查询中退回到受欢迎度排名。每周我都会根据上个月访问文档的次数计算一个popRank字段。这意味着并非所有的文档都有popRank,只有上个月访问过的文档
下面的查询不适用于must子句,即使存在包含该类别的项
GET /index/docs/_search
{
"size": 10,
"query": {
"bool": {
"should": [{
"terms": {
我试图在Umbraco 7(7.3.6)中构建一些自定义搜索逻辑,该逻辑将搜索用户提供的多个术语,其中这些术语可能包括引号中的短语
我有下面的代码,它采用提供的术语,使用正则表达式分割单个术语(同时保留括在引号中的术语),然后使用一系列GroupedOr调用来搜索多个字段
var searcher = Examine.ExamineManager.Instance.SearchProviderCollection[this.searchConfig.SiteSearchProviderName]
我有一个弹性搜索索引,它包含五种不同类型的文档
index name : fruits
mapping types : apple, orange, banana, papaya, grapes.
我总共有50000个文档,每个映射类型包含10000个文档
index name : fruits
mapping types : apple, orange, banana, papaya, grapes.
现在我用kibana索引了弹性搜索
当我在“发现”选项卡中点击*时,它只显示10000个
我有一个Elasticsearch模糊查询,如下所示:
GET /resume/candidate/_search
{
"query": {
"fuzzy" : { "name" : {
"value": "Tam",
"fuzziness" : 2,
"max_expansions": 50 }
}
}
}
我的索引中有汤姆、罗伊和麦
我的问题如下:假设我有三个文件。A、 这些文件中的每一个都包含100-150M字符串(每行一个)。每个字符串的格式为分层路径,如/e/d/f。例如:
File A (RTL):
/arbiter/par0/unit1/sigA
/arbiter/par0/unit1/sigB
...
/arbiter/par0/unit2/sigA
File B (SCH)
/arbiter_sch/par0/unit1/sigA
/arbiter_sch/par0/unit1/sigB
...
/arbit
标签:elasticsearch Lucene
elastic-cloud
我面临的问题是建立一个生产就绪的elasticsearch集群。
目前我只在elasticsearch中存储测试日志文件
到目前为止还不错,但是因为我们每天有1TB的生产日志
我想知道如何为这个用例正确地设置elasticsearch索引
我们想将这些日志保存30天。群集设置有100TB的磁盘空间。
我想选择副本计数为3,因此使用的磁盘空间应该在90TB左右
但是我应该分配多少碎片呢
Elastic和Lucene段中的碎片有什么不同吗?您应该阅读Val发送的文章。但对于日志,您可以每天创建一个索
接下来,我设置了一个包含多个(文字)谓词的索引:
PREFIX luc: <http://www.ontotext.com/owlim/lucene#>
INSERT DATA {
luc:index luc:setParam "uris" .
luc:include luc:setParam "literals" .
luc:moleculeSize luc:setParam "1" .
我在带有字段的弹性搜索中有一个json记录
"streetName": "5 Street",
"name": ["Shivam Apartments"]
我尝试了下面的查询,但是如果我在查询中添加streetName bool,它不会返回任何内容
{
"query": {
"bool": {
"must"
标签: Lucene
information-retrieval
如何在同一索引目录中,使用不同的分析器对少量英文文档和更多阿拉伯文文档进行索引?您是否有具体问题,或者您是否对一般方法提出了更广泛的问题?看看,这有助于回答您的任何问题吗?
上一页 1 2 ...
19 20 21 22 23 24 25 ...
下一页 最后一页 共 78 页