对于HTML和XML文档(本地或基于web的)以及在Lucene/Solr解决方案空间中运行良好的爬虫(spider)是什么?可以是基于Java的,但不一定非要如此。我建议您去看看,以获得一些灵感:
Nutch是一款开源的网络搜索软件。它以LuceneJava为基础,添加了web细节,如爬虫、链接图数据库、HTML和其他文档格式的解析器等
在我看来,这是一个相当重要的漏洞,它阻碍了Solr的广泛采用。新的DataImportHandler是导入结构化数据的良好的第一步,但是对于Solr来说没有一
我正在使用Lucene构建一个“图书搜索”API。
我需要索引Lucene索引中的图书名称、作者和图书类别字段
一本书可以归入多个不同的图书类别……例如:
书名1——小说、幽默、哲学。
书名1——小说、科学。
书名1——幽默、商业。
书名4幽默
等等
用户应该能够搜索特定类别下的所有书籍,比如“homour”
在这种情况下,我如何为上述字段编制索引并在lucene中构建查询?我将改用它——它构建在lucene上,由ASF管理,但比lucene更容易使用,尤其是对于新手
If提供了Lucene几乎
我有一个需要来自令牌流的字段;它不能用字符串实例化,然后分析为标记。例如,我可能希望将来自多个列(在我的RDBMS中)的数据合并到一个Lucene字段中,但我希望以自己的方式分析每个列。因此,我不能简单地将它们作为一个字符串进行归纳,然后分析结果字符串
我现在遇到的问题是,无法存储从令牌流创建的字段,这在一般情况下是有意义的,因为该流可能没有明显的字符串表示。但是,我知道字符串表示形式,我想存储它
我尝试了两次添加同一个字段,一次是存储并具有字符串数据,另一次是来自令牌流,但似乎无法做到这一点。
标签: Lucene
expectation-maximization
我正在尝试为文档聚类实现一个期望最大化算法。我计划使用Lucene术语向量来查找两个文档之间的相似性。使用朴素贝叶斯的EM算法有两种:多元模型和多项式模型。简单来说,多项式模型使用文档中不同单词的频率,而多元模型仅使用文档中是否存在单词的信息(布尔向量)
我知道Lucene中的术语向量存储当前文档中的术语及其频率。这正是多项式模型所需要的
但多元模型需要以下条件:
存储某一特定项的存在或不存在的向量。因此,所有文档中的所有术语都必须由该向量处理
例如:
doc1:现场内容有以下术语:这是快乐的世
我有一个包含两个内容字段的索引(分析、索引和存储):
例如:姓名,爱好。(可以使用不同的值多次添加嗜好字段)
我有另一个字段,它仅被索引(未分析和未存储)用于筛选:
例如:country\u code
现在,我想构建一个查询,该查询将检索与某个“搜索”输入字段匹配(尽可能好)的文档,但只检索那些country\u code具有确切值的文档
构建这样一个查询最合适的组合查询语法/查询解析器是什么 为什么不从QueryParser开始,它可能适用于您的用例,并且需要最少的工作量
您的问题并不清楚,但
我正在考虑RavenDb实施“高级分面搜索”方案。
我必须处理复杂的层次分类法和跨树的不同分支的共享方面,同时支持全文搜索和所有其他基本功能
是否有任何资源记录了如何使用RavendBAPI实现这一点
关于该主题的极其复杂的论文:
Solr's way:为了速度起见,我会使用纯Lucene处理这部分的树搜索。2种方法是父子链接法和路径枚举/杜威十进制法
父子关系是我们在算法类中学习实现链表的方式。更新很容易,但查询需要访问每个节点(例如,您无法直接从父节点访问其曾孙节点)。考虑到无论如何都需要访
我有一个jcr存储库(带有嵌入式servlet容器),它使用lucene进行全文搜索。搜索查询似乎会触发cpu利用率的峰值,即使在搜索结果返回后,cpu利用率也会保持相当长的一段时间。我接受了线程转储,并意识到Lucene Merge线程导致了cpu的峰值
"Lucene Merge Thread #0" daemon prio=10 tid=0x000000005fd95000 nid=0x5add runnable [0x0000000049fc8000]
java.lang.
看起来有一种非常方便的方法可以通过以下方法推送有关索引的元数据(上次索引更新的时间戳):
IndexWriter.Commit(commitUserData)
我所观察到的是,只有当提交包含至少一条文档指令(添加/删除或更新)时,这才有效,而在我的情况下,即使没有要更新的文档,我也希望推送用户数据。我总是更新一个“临时文件”来解决这个问题,但我觉得脏兮兮的
还有其他更好的方法吗?
使用Lucene.NET 2.9.4.1
谢谢 commit userdata映射用于持久化有关提交的信息,如果没
使用Lucene 4.2.1 API,我需要一个
+字段名称:[2013-01-17T00:00:00Z至*]
以编程方式构造
我瞥了一眼,但没能想出一个快速的解决方案。此查询与范围查询没有什么不同,唯一的区别是它希望将日期格式化为
您可以使用Solr来构造这个查询。提示:QParser参数被忽略,因此您可以跳过它。我在那里看不到一个简单的答案,尽管它让我更接近。这难道不是一个可以提取的一行代码,可以为我和其他想这样做的人节省时间吗?我想你需要重新阅读这个问题的答案。很明显,这里有一个解决方案。
我试图计算文档中每个术语的tf idf值。因此,我迭代了一个文档中的术语,希望找到该术语在整个语料库中的出现频率以及出现该术语的文档数量。以下是我的代码:
/@param索引目录的索引路径
//@param docNbr索引中的文档编号
公共void readingIndex(字符串索引,int docNbr){
IndexReader=DirectoryReader.open(FSDirectory.open(新文件(索引));
文档doc=读卡器文档(docNbr);
System.out.
有没有办法只从Kibana中的dateOptionalTime字段查询时间?因为我可以使用range方法成功地查询完整日期
这是我的地图剪贴画
"timestamp": {
"format": "dateOptionalTime",
"type": "date"
},
我只想做一些类似于:timestamp:[3:31:29到13:00:00]
我正在尝试允许内容编辑器具有从搜索页面排除项目的选项。正在搜索的模板上有一个复选框,用于指示该模板是否应显示。我已经看到了一些答案,包括从Sitecore.Search.Crawlers.DatabaseCrawler继承并重写AddItem方法()。不过,在从控制面板重建索引时,这似乎不会受到影响。我已经能够找到Sitecore.ContentSearch.SitecoreItemCrawler中名为RebuildFromRoot的方法。有人确切地知道这个问题中的DatabaseCrawler
以下是我当前的代码:
BooleanQuery.Builder bq = new BooleanQuery.Builder();
bq.add(new TermQuery(new Term(FIELD_TYPE, type.name())), BooleanClause.Occur.FILTER);
Query stringQuery = parser.parse(queryString).rewrite(reader);
bq.add(stringQuery, BooleanClause.O
在尝试使用Lucene进行搜索时,我看到以下错误。(版本1.4.3)。关于我为什么会看到这种情况以及如何解决它,有什么想法吗
Caused by: java.io.IOException: read past EOF
at org.apache.lucene.store.InputStream.refill(InputStream.java:154)
at org.apache.lucene.store.InputStream.readByte(InputStream.java:
我正在尝试使用Lucene查询具有以下结构的域
Student 1-------* Attendance *---------1 Course
该领域的数据汇总如下
Course.name Attendance.mandatory Student.name
-------------------------------------------------
cooking N Bob
art Y
我知道有一些半相似的问题,但在本例中,我正在构建一个离线索引,直到构建完成。我正在从头开始构建两个核心,一个有大约300k条记录,其中包含大量引用信息和大量全文,这是文档索引,另一个核心有大约660万条记录,其中包含全文,这是页面索引
鉴于此索引是离线构建的,唯一真正的性能问题是构建速度。没有人应该查询这些数据
如果我停止添加项目50秒,自动提交显然会触发?但我不这么做。我一次加十个,每隔几秒钟加一次
那么,我应该更频繁地承诺吗?我觉得它运行的时间越长,速度就越慢,至少在我的6k文档索引测试用例
在描述具有三层体系结构的系统时,Lucene属于业务逻辑层还是数据层?如果您使用的是Lucene,那么您就不是真正的三层。因此,答案取决于您是否想要清楚准确地描述您的软件是如何构造的,还是仅仅有一些商业/政治理由声称符合流行语
如果是后者,那么如果您说它在数据层或应用层中,那么您可能不会真的被证明是错误的。但你最好还是采用一种新的,希望不那么不准确的方法:
我正在使用Solr的schema.xml,我知道我可以使用'default'属性指定默认值,如果没有提供给定字段的值,则将使用该默认值。但是,假设我选择不设置“default”属性,那么Solr将返回哪个默认值
我认为我为给定字段使用的字段类型将有一个默认值,可以使用该值,但我没有成功地找到任何有关此的详细信息。或者,我认为不提供值和不有效地设置默认值就好像特定文档不存在该字段一样
但是,我不确定,我想知道:-)
更新1
在我看来,如果没有设置默认值,也没有为给定字段提供值,Solr只会抛出一个
我正在尝试与Solr进行模糊匹配
在我的文档索引名字段中,我提到了“MYNEWORGANIZATION20SEP2011”-实际上是“MYNEWORGANIZATION20SEP2011”,但我删除了空格和其他字符
现在上面的单词(不带空格)如果我直接作为查询“MYNEWORGANIZATION20SEP2011”进行搜索,Solr将得到一个结果作为上面的文档ID,完美
但如果我从这个字符串中删除两个字符,并在查询中提供“MYNEWORGANIZATION20SEP20~0.8”,我将得到0个结
使用bobo browse收集多值方面的结果,如何按每个方面中得分最高的文档对这些方面进行排序?
例如,如果:
文件d1具有面f1和f2,分数为3.5
文档d2具有面f2和f3,分数为4.7
文档d3具有面f1和f3,分数为0.9
文件d4具有面f2和f3,得分为2.2
文件d5具有面f1和分数3.4
文件d6具有面f3,得分为5.4
我希望这些结果按以下顺序排列:
f3、f2、f1
谢谢。这个问题没有直截了当的答案。文档没有足够的信息来关联不同的字段,所以唯一简单的解决方案是生成派生字
我遇到了一个问题,我用elasticsearch索引了一个文档,当我查询多值字段时,它不会返回任何结果。这是我的搜索:
curl-xget
"http://mncoboss13:9200/boss_model_reservations/_search?pretty=true"
-d'{“查询”:{“匹配所有”:{},“筛选”:{“和”:{“术语”:{“日计划”:[“MO”]}]},“大小”:100,“从”:0}”
结果:
{“take”:2,“timed_out”:false,“_shards”
标签: Lucene
lucene.netwildcardstemming
我正在编辑一个lucene.net实现(2.3.2),其中包括词干分析和自动通配符(在单词末尾添加*)
我发现带有通配符的精确单词不起作用。(因此stack*适用于stackoverflow,但stackoverflow*不受欢迎),我想知道这是什么原因,以及如何修复
提前谢谢。(也感谢您没有问我为什么要同时实现自动通配符和词干分析。)
我将使查询始终以query为前缀,这样我就不必在查询中添加任何讨厌的“*”了,这样我们就可以看到是否有任何东西变得清晰了
编辑:只有有词干的单词不能使用通配符。
我正在尝试使用Lucene 3.0.3从用户指定的查询中提取术语。我的代码如下所示:
protected Set<Term> getTerms(IndexSearcher searcher, Analyzer analyzer, String field, String queryString, boolean countOnly) {
Set<Term> results = null;
try {
logger.trace( "Creat
我正在用Lucene为Java应用程序中的一些英文文本编制索引,我需要用Lucene 4_1_0对它们进行柠檬化。我发现了词干(PorterStemFilter和SnowballFilter),但这还不够
在勒芒化之后,我想使用一个同义词表进行查询扩展,Lucene是否也包括一个同义词表
如果不可能,我将使用斯坦福德Corenlp和WordNet
你认为柠檬化会影响使用Lucene库的搜索吗
谢谢据我所知,您需要自己建立同义化支持 据我所知,您需要自己建立同义化支持 应该期望柠檬化能够提高准确性
我已经在lucene索引中正确插入了有效负载,如下所示:
addDoc(w, "Lucene|1 in|2 Lucene|3 Action", "193398817");
addDoc(w, "Lucene|1 for|2 Dummies", "55320055Z");
addDoc(w, "Managing Gigabytes", "55063554A");
addDoc(w, "The Art|2 of Computer Science Lucene|18", "9900333X");
一
我正在尝试向ContentSearch查询中的日期字段添加字段排序。我能够正确地过滤索引字段,因此我假设字段正确地填充了值,但是,结果没有正确排序。有什么想法吗?下面是我用来进行查询的代码:
public static IEnumerable<Episode> GetPastEpisodes(Show show, bool includeMostRecent = false, int count = 0)
{
IEnumerable<Episode> pastEp
目前,我正在Java平台上使用Lucene 4.9.0开发高性能NRT系统,该系统可以检测几乎重复的文本文档
为此,我查询Lucene以返回一些匹配的候选项集,并在本地执行近似重复的计算(通过检索和缓存术语向量)。但我主要关心的是将Lucene的docId(可以更改)绑定到我自己存储在索引中的唯一且不可变的文档id的性能问题
我的流程如下:
Lucene中的文档查询
对于每个文件:
基于Lucene docId获取我的唯一文档id
从缓存中获取我的文档id的术语向量(如果它不存在-从Luce
我正试图构建一个包含5000个文档的Lucene索引,而正在创建的索引似乎变得太大了。我想知道是否有办法缩小索引的大小
我使用的是Lucene 4.10,我想索引的文档有各种格式(.docx、.xlsx、.pdf、.rtf、.txt)。包含我正在索引的文档的目录大小约为1Gb。索引3000/5000个文档后,索引大小已经是10Gb。我还没有找到任何关于目录大小与索引大小的正常比率的有用信息,但是对于只有1Gb的文档来说,10Gb的索引似乎太大了
为了读入文档,我使用Tika 1.6 AutoDe
我需要为我的应用程序优化CQ5 lucene索引配置
我想提供一个自定义搜索配置,但我很难真正理解默认配置
资料来源:)
第一个问题:
默认配置中使用的“包括”标记是否正确
例如:
默认配置使用标记“include”为nt:file聚合包含属性“jcr:content/jcr:lastModified”
<aggregate primaryType="nt:file">
<include>jcr:content</include>
<in
如果没有内部字段(如_index、_type),如何获得elasticsearch查询返回结果
原因:对于一些页面,我使用AJAX调用来获得结果,而不是在服务器上呈现整个网页。但是为每个文档公开_index&_类型的内部字段不仅是冗余带宽,而且还公开了索引和类型名称的安全问题
请帮忙 这个问题不久前在elasticsearch谷歌集团的网站上讨论过
总之,您不能将这些内部字段隐藏在框外。我猜您不是直接查询Elasticsearch,我希望您的服务器不是向世界开放的,而是一个中间REST服务,因此
我正在尝试使用MusicBrainz的API,但我对搜索端点的结果有一些问题
让我们举一个搜索Who's Who的例子尺寸020-Klack(混合两种)
从他们的站点搜索到,第一个结果几乎正确(可能是因为数据库中根本没有100%正确的信息)
使用API会导致不同的情况,从而导致一些问题。
我做了一些不同的尝试,但没有成功,即使我认为我足够了解Lucene的语法,可以为这个服务编写一个成功的查询
-查询“Who's Who?-SIZE020-Klack(混合两个)”的空结果
-查询Who's+W
是否有API或其他方法来确定字段在Elasticsearch索引中占用了多少磁盘空间?我们想削减一些领域,但在不知道一个领域需要多少空间,它在黑暗中拍摄
我们使用Elasticsearch,但我也可以查看单个Lucene索引(=ES shard)来获取此信息。您的字段是否经过分析?如果是,您对这些字段有什么样的分析器(标准等)?为了更好地理解ES文档的存储要求,需要阅读两篇很棒的文章:和@Val谢谢。是的,已分析-我们使用尺寸为1-5的ngram分析仪。这篇文章比较了索引的总大小,而我想知道哪些
在我的sitecore实例中,我有两个模板的内容:产品和产品类别。这些产品有一个多列表,作为查找链接到产品类别。这些产品还具有索引计算字段设置,该设置基于选定的产品类别预计算一些数据。因此,当用户更改产品时,Sitecore的索引策略会使用计算字段对产品进行索引
我的问题是,当用户更改产品类别中的数据时,我希望Sitecore重新编制所有相关产品的索引。我不知道该怎么做。我没有看到任何钩子可以检测到某个产品类别正在被索引,因此我可以通过编程触发对产品的索引一种方法是添加一个自定义的OnItemS
我正在尝试对包含空格的属性名运行聚合。
这就是搜索的查询主体
{
"size": 0,
"aggs": {
"categoryId": {
"filter": {
"bool": {
"filter": [
{
"term": {
"title.list": "iphone"
}
}
我有很多lucene查询,其中包含许多具有特殊含义的字符,如冒号、斜杠、引号等。
我知道可以通过使用“\”来转义单个字符,但是否可以将整个句子包含到某个要在查询中精确匹配的内容中,而不解释任何符号
谢谢。是的,转义传递给它的字符串中的所有内容
此外,使用短语查询通常会使大多数查询语法与myfield:I+do+nothave:to/concer/about^22-query-syntax here~2无关,引号除外。如果一个短语是您试图搜索的,那就是。您的分析器没有删除任何非字母符号吗?事实上,
这是一个简单的用例
我有一个将Lucene查询发送到弹性搜索的系统。我有一张地图
{
“映射”:{
“财产”:{
“杂货店名称”:{
“类型”:“文本”
},
“项目”:{
“类型”:“嵌套”,
“财产”:{
“姓名”:{
“类型”:“文本”
},
“股票”:{
“类型”:“整数”
},
“类别”:{
“类型”:“文本”
}
}
}
}
}
}
数据看起来像
{
“杂货店名称”:“弹性食品”,
“项目”:[
{
“名称”:“香蕉”,
“股票”:“12”,
“类别”:“水果”
},
{
“名字”
是否有一个已知的数学公式,我可以用来估计一个新的Lucene指数的大小?我知道要索引多少字段,以及每个字段的大小。而且,我知道有多少项将被索引。那么,一旦这些被Lucene处理,它如何转换成字节呢 我认为这也与每个术语的频率有关(即,10000份相同术语的索引应该比10000份完全唯一术语的索引小得多)
此外,是否使用术语向量,以及是否存储字段,可能有一点依赖性。你能提供更多细节吗?你能分析你的源数据的术语频率吗?以下是答案。
主文件是复合索引(.cfs文件)。
如果您有术语统计信息,您可能会得
我正在和Lucene做一个应用程序(我是它的noob),我面临一些问题。
我的应用程序使用Lucene 2.4.0库和自定义的类似实现(jar已导入)
在我的应用程序中,我手动计算doqFreq和numDocs(我添加所有索引的值,然后计算一个全局值,以便在每个查询中使用),我希望在自定义相似性实现中使用该值,以便计算新的IDF
问题是,我不知道如何在新的类似实现上使用(或发送)我的应用程序中的新doqFreq和numDocs值,因为我不想在这个额外类之外更改lucene的代码
有什么建议或例子
--我不想发动任何宗教战争,但快速的谷歌搜索表明ApacheLucene是首选的用于索引和搜索的开源工具。还有其他的吗
--Lucene使用什么文件格式存储其索引文件
感谢是前进。
道格
作为一个lucene用户,我可以说它在最近几个版本中的性能有了很大的提高(这并不意味着它以前速度很慢!)
它使用专有格式
我建议你看看。
我有Lucene.net的经验,我们在多线程索引方面有很多问题。Lucene将索引存储在文件中,这些文件可以被反病毒软件锁定。
你也不能在Lucene中比较数字:不可能按大小
在Luke中,如果输入搜索表达式docfile:tomatos.jpg*,解析后的查询是docfile:tomatos.jpg*。当搜索表达式为docfile:tomatos.jpg时,没有星号*解析的查询为docfile:tomatos.jpg,带有小写字母“t”
为什么?
我怎样才能改变这个?
顺便说一句,使用org.apache.lucene.analysis.standard.StandardAnalyzer。StandardAnalyzer使用小写过滤器,这意味着它会将查询和数据小写。
我正在使用Alfresco 3.4d,导入了一些节点,并使用NodeService创建了一些节点。今天我注意到,按ID的Lucene查询有时会返回两行而不是一行。并非所有节点都显示这种行为
例如,当我在Alfresco节点浏览器中执行以下Lucene查询时,得到如下结果:ID:workspace://SpacesStore/96c0cc27-cb8c-49cf-977d-a966e5c5e9ca“
一个ID查询怎么可能返回多行?我试着重建Lucene索引,但没用。删除节点时,查询返回0行。如何
今天我试图在Lucene Java API v3.6.0上使用SnowBallaAnalyzer,但它似乎已经被弃用了。当我尝试在代码上使用分析器时,代码到达分析器时停止。事实上,我想使用PorterStemmer,但它在luce上不可用,所以我决定使用这个雪球,但出现了这个问题
有人知道怎么解决这个问题吗
另外,是否有人知道如何设置stop word文件格式,原因是当我放置:
a
as
able
about
above
according
accordingly
across
actually
我想在我基于Lucene的搜索引擎站点上添加新字段,但是我希望能够在将查询传递给搜索者之前拦截查询并修改它们
例如,每个文档都有userid字段,因此您可以根据特定用户的ID搜索其编写的文档,例如foo-bar-userid:123,但是我想添加按用户名搜索的功能
我想在查询中添加一个字段user:RonaldMcDonald(而不是到文档),但是我希望能够截取该术语,并将其替换为等效的userid:123术语(我自己的代码将负责将“RonaldMcDonald”转换为“123”)
下面是我现在
我想索引并搜索大量apache访问日志
我在考虑使用lucene,我想在将数据传递给分析器之前更好地理解是否需要实现解析器
我的目标是进行大量的复合查询
在将数据传递给分析器之前,您知道如何实现解析器吗?Lucene有标准的查询解析器,可以处理相当健壮的语法来创建查询。您是否有一些您认为标准无法满足的特殊需求?您应该阅读《Lucene在行动》一书,以便更好地理解Lucene。可以在Lucene中使用多种方法进行组合查询;例如BooleanQuery…在将数据传递给分析器之前,它与实现解析器无关。
我使用Lucene4.0制作索引文件:
File directorycreate = new File(indexpath);
Directory dir = new SimpleFSDirectory(directorycreate);
Analyzer analyzer = new IKAnalyzer(true);
IndexWriterConfig conf = new In
我正试图用Lucene 4.7为一些长文本编制索引,我认为一切都很好,但我意识到我的搜索命中率并不完整
经过长时间的搜索,我发现了一个网页,上面写着“当我尝试在Lucene中索引长文本时,Lucene只索引前n个字符以防止堆栈溢出。”
我想给全文编索引,但我不知道怎么做?请给我一些帮助?。这是我的密码:
File indexDir = new File(indexPath);
Directory directory = FSDirectory.open(indexDir);
我正在使用以下选项进行搜索:
scriptSort =
_script:
script: "if(doc['user.roles'].value=='contributor') return 1; else return 2;",
type: "number",
order: "asc"
options =
query: ...
size: ...
from: ...
aggs: ...
sort
可以根据lucene中的术语向量位置搜索文档相似性吗?
例如,有三个文档的内容如下
1:嗨,你好吗
2:你好
3:嗨,你好吗
现在如果在lucene中搜索Doc1,那么它应该返回得分较高的Doc3,而不是得分较低的Doc2,因为Doc2在不同的位置有“you”和“are”两个词
简而言之,lucene应该返回具有术语位置的精确匹配文档,我认为您需要的是一个短语查询,它是一个lucene查询类型,它将考虑您的标记的精确位置,并允许您定义有关这些标记的斜率或排列容差
换句话说,你的代币在位置上与来源
我曾经尝试过短语、通配符和关键字查询,但没有什么能真正完美地工作
...
@Field(name = "firstLastName", index = org.hibernate.search.annotations.Index.YES, analyze = Analyze.NO, store = Store.NO)
public String getFirstLastName() {
return this.firstLastName;
}
是否仍然需要计算某个值在特定时间段内更改了多少次
例如,我的索引中存储了以下信息
Index Name Result TimeStamp
idx16 A 7 March 7th 2018, 16:17:35.000
idx16 A 7 March 7th 2018, 16:17:36.000
idx16 A 8 March 7th 2018, 16:17:37.000
idx16 A 7 March 7th 2018, 16
上一页 1 2 ...
15 16 17 18 19 20 21 ...
下一页 最后一页 共 78 页