我在Lucene索引中有5项记录
a、 记录1包含--税
分析。日期字段值为3月
2009年
b、 记录2包含高级税务
分析师。日期字段值为2009年8月
c、 记录3包含高级税务
分析师。日期字段值为2009年7月
d、 记录4包含——税务分析师。日期
字段值为2009年2月
e、 记录5包含高级税务
分析师。日期字段值为2009年10月
如果输入关键字为高级税务分析师,则搜索结果应按以下顺序显示:
a、 记录5——因为这个记录是
已获得最近的日期,并且
找到匹配的短语了吗
b、 记录2
我已经下载了Lucene 3.0.0和
当我使用命令时
lucene所在目录中的java-jar lucene-core-3.0.0.jar
我收到了这个消息
未能从lucene-core-3.0.0.jar加载主类清单属性
如何继续?该错误意味着它不是可执行的jar。也许你应该把所有的JAR放在你的类路径中,然后从上的演示开始。Skaffman是正确的。这是一个例子。如果您想要一个独立的搜索服务器,请尝试。我正在使用lucene进行信息检索。下载lucene后需要设置类路径:
在Linux中设
我有一些文档存储在带有docId字段的Lucene索引中。
我想获取存储在索引中的所有文档ID。还有一个问题。文档的数量大约是300000,所以我更希望得到大小为500的文档块。可以这样做吗?文档编号(或ID)将是从0到IndexReader.maxDoc()-1的后续编号。这些数字不是持久的,仅对打开的IndexReader有效。您可以使用IndexReader.isDeleted(int documentNumber)方法检查文档是否被删除IndexReader=//创建IndexReade
我刚从我的前同事那里接管了solr/lucene的工作。但是有一个奇怪的错误
如果数据导入后没有优化,实际上如果有多个段文件,那么搜索结果就会出错。我们正在使用定制的solr searchComponent。就我对lucene的了解而言,优化不应该影响搜索结果。我怀疑这可能与多线程或未关闭的搜索器/读取器或其他相关
有人能帮忙吗?谢谢。这还是个猜测。我发现自定义搜索组件使用了一个自定义lucene过滤器。在该过滤器中,针对过滤器查询调用solrindexearcher.search。很有可能这就
如果我创建了一个文档并添加了一个既存储又分析的字段,那么如何将该字段作为令牌列表读回?我有以下资料:
Document doc = new Document();
doc.add(new Field("url", fileName, Store.YES, Index.NOT_ANALYZED));
doc.add(new Field("text", fileContent, Store.YES, Index.ANALYZED
我使用Solr1.4和Solr4在文档内部进行全文搜索。
目前,我无法搜索整个短语,比如文本块中的“狗跑”一词:“狗跑过房子。”
对于这个测试用例,我使用了一个简单的solr URL:“狗跑”
我使用的是一个标记化、带词干的文本字段,具有以下选项:
<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<to
在lucene 3.1中,我有一个大型布尔查询,我执行时如下:
IndexSearcher is=新的IndexSearcher(myDir);
is.搜索(查询,10)
我得到10个结果很好,但它们是按docId排序的,不包含分数信息。我能找到的所有文档都说lucene默认按相关性/分数排序,但我不是这样。如果我要求解释,没有分数信息,只有“0.0”。有趣的是,如果我在Luke中对同一索引执行相同的查询,我会得到一个按分数排序的结果,但我看不出如何保持分数,并在从应用程序启动时用于排序。所以我
我有多个lucene.net索引,需要在这些索引上搜索查询字符串。那么我需要在所有这些索引上打开一个新的IndexSearcher吗?或者我可以用一个IndexSearcher来实现这一点吗
谢谢可以使用完成
它在多个子搜索器上实现可搜索接口。如果您只需要来自Searchable接口的方法,那么它对您来说就像一个常规的IndexSearcher
如果需要访问找到文档的底层搜索者,可以使用subsarcher(int)和subDoc(int)方法
从v3.5开始,MultiSearcher就被弃用
我正在使用Lucene为数据库中的记录编制索引。我的表中有一百万条记录叫做“文档”。这些记录只能由特定用户访问。实际情况是,单个用户最多可以访问Documents表中的100条记录。以下哪项是此场景的最佳实践
将Documents表中的所有100万条记录作为单个索引文件进行索引,并将用户信息作为该索引中的一个字段,或
创建用户特定索引
听起来在第二种情况下,你会得到很多索引,如果你想同时搜索它们,Lucene将不得不打开很多文件,因此你可能很容易达到操作系统对打开文件数量的限制。如果您决定按需打
我们能在没有键的情况下进行lucene查询,只提供值吗?
例如:
让我们在以下两个属性上创建索引:城市和国家
现在,我可以在不指定任何属性名称的情况下搜索“*:query”
谢谢,
Abdul您可以配置一个默认字段,但是如果您想用一个查询词搜索两个(或全部)数据,您可以创建一个新字段进行搜索,并将所有要搜索的数据添加到该字段中。
因此,现在您正在添加:
city: mycity
country: mycountry
您可以添加另一个字段,称之为地址或文本,这对您的使用是有意义的,因此我们有:
标签: Lucene
search-engineelasticsearch
我使用了父子映射来规范化数据,但据我所知,无法从父文档中获取任何字段
以下是我的索引的映射:
{
"mappings": {
"building": {
"properties": {
"name": {
"type": "string"
}
}
},
"flat": {
"_parent": {
"type": "building"
},
"
我正在努力提高某个露天场地与其他场地相比的效果。
我已经编写了以下查询,但无法正常工作:
(((TAG:term or cm:name:term OR cm:title:term )^8 OR (cm:description:term )^6) AND PATH:'/app:company_home/st:sites/cm:Pub/cm:documentLibrary//*')^8
OR
(((TAG:term or cm:name:term OR cm:title:term
使用lucene.net(3.0.3)的highlighter不适用于以下代码。如果我正在搜索一个单词“deal”,高亮显示正在显示,但如果我正在搜索一个带有wildchar“deal*”的单词,则不会突出显示
protected void btnIndex_Click(object sender, EventArgs e)
{
string indexPath = @"D:\temp\LuceneIndex1";
Lucene.Net.Store.Di
我有一个数据模型,其中我有两个实体类别和元素
元素具有标题和描述以及纬度和经度
我有一个有限的类别列表(当时有66个),我想计算每个类别符合其他标准的元素数量
为了快速查询,我从类别到元素connectedElements都有一个优势,但我需要确保connectedElements是根据其他标准过滤的,然后才能进行计数
我的初步查询:
SELECT $count.count as count, name, id
FROM Category
LET $count = (
SELECT
我无法理解lucene中特殊字符的处理。
我的分析器没有停止字,因此不会删除特殊字符:
CharArraySet stopwords = new CharArraySet(0, true);
return new GermanAnalyzer(stopwords);
然后我创建了如下文档:
doc.add(new TextField("tags", "23", Store.NO));
doc.add(new TextField("tags", "Brüder-Grimm-Weg", Sto
我尝试查询ApacheLucene索引,该索引是使用包含日期列的数据库表构建的,我的查询引用的正是该列。在Luke中,我使用的搜索表达式如下所示:
column_name:[yyyy-MM-dd TO yyyy-MM-dd]
返回的结果是没有日期(在查询列中)的记录,这些日期的起始值为年份或更早,而起始值为年份之后的记录,结束值为年份之前的记录。因此,如果我写专栏名称:[2011-05-22至2015-09-03]-我将获得包含2012年、2013年、2014年和2015年的记录
但是,根据搜
标签:elasticsearch Lucene
immutabilitysegment
众所周知,当在elasticsearch中更新或删除文档内容时,该段不会立即删除,而是新创建的
在那之后,我们知道分段是通过一个计划合并的
我知道它这样工作的原因是因为它很贵
但我不知道片段不可变且不能立即合并的确切原因
即使我搜索了文档,也找不到确切的原因,但是如果有人知道这一点,请发表评论
谢谢。拥有一个不可变的段有很多好处,例如
它可以很容易地在多线程环境中使用,因为内容是不可变的,当您有可变的内容时,您不必担心共享状态和竞争条件以及很多复杂性
它可以被有效地缓存,因为缓存快速变化的数据集
我正在使用Solr,希望能够将查询/令牌记录到数据库中,以便对营销和建议搜索功能进行分析
我猜Lucene过滤器是一种很好的方法,可能会在查询过滤器链中添加一个过滤器,用于记录到指定数据库的给定字段类型。我想知道做这件事的最佳方法,以尽量减少对Solr响应时间的影响
如果有人曾经这样做过,并且愿意分享他们的解决方案,那就太棒了。也许最简单的方法就是分析访问日志,并将数据转换成报告。这可以脱机完成,并且不会影响响应时间。访问日志不提供任何关于所发现内容的if。此日志是在HTTP层生成的。从技术上讲
我的网页上有以下两个字段:BookAuthor和BookDescription。提交时,页面使用给定的搜索条件搜索Lucene索引
如果用户没有在这两个字段中键入任何内容并提交页面,我如何让Lucene.Net从我的索引中返回所有书籍,而不考虑BookAuthor和BookDescription字段值?这里的常见解决方案是在索引中的每个文档中添加另一个字段。这是一个伪字段,如“ALL_RECORDS”,它包含一些伪值,如“x”。Lucene不会接受空查询,因此,如果用户尝试执行空查询,应用程序会
我可以用不同的因子提升多字段查询器中的不同字段吗?
另外,我能分配给字段的最大增压系数值是多少
非常感谢!
Ed多字段QueryParser有一个[constructor][1]可以接受提升映射。您可以将其与以下内容一起使用:
String[] fields = new String[] { "title", "keywords", "text" };
HashMap<String,Float> boosts = new HashMap<String,Float>();
如何为我正在使用Lucene编制索引的文档中的每个字段启用不同的分析器?例如:
RAMDirectory dir = new RAMDirectory();
IndexWriter iw = new IndexWriter(dir, new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.UNLIMITED);
Do
在第三行,我得到了一些异常,比如“IOException:read over eof”和“LookaheadSuccess:Error in the application”
有没有办法避免这种情况?我讨厌每次执行搜索时中断并按两次继续
注意:我只在告诉visual Studio显示即使捕获也会抛出的异常时才注意到这一点。我没有得到异常,我只是看到每次搜索时都会抛出两个(或三个)断点。应用程序运行良好
var searcher=newindexsearcher(目录,true);
var par
我们正在使用Raven验证登录,以便人们可以进入我们的网站
我们发现,如果您这样做:
// Context is an IDocumentSession
Context.Query<UserModels>()
.SingleOrDefault(u => u.Email.ToLower() == email.ToLower());
//上下文是一个IDocumentSession
Context.Query()
.SingleOrDefault(u=>
我在Lucene(solr,真的)中的文档有几个字段,让我们称它们为textField1、numfied1、numfied2
我的应用程序将有一个需要查询的搜索词列表1 textField,一个numField1的数字列表,以及另一个numField2的数字列表
我想创建一个Lucene查询,它可以执行以下操作:
textField matches one or more words in words1
AND either (
numfield1 is one of the value
到目前为止,我已经能够使用Lucene查询语法。现在,我需要能够通过修改查询行返回节点上的分数和点击数:
得到
换句话说,我不想创建嵌入式图形数据库,因为我正在尝试访问我保存在REST服务器中的数据。关于如何返回分数和命中率有什么建议吗
我是否可以创建Lucene提供的类的实例来实现这一点
谢谢 要做到这一点,您可能需要编写一个小型的Neo4j服务器非托管扩展,因为它不在核心RESTAPI中,请参阅以获取详细信息。作为参数,您可以采用索引、评分参数和查询
那会有帮助吗
/彼得
场景是这样的:我必须使用多字段查询,它为多个字段建立索引。得分时,我只想考虑一个场。假设查询为“name='Chris'和age='25',则最终分数仅根据年龄计算。我怎样才能做到这一点呢?我已经有一段时间没有和Lucene一起玩了,但我想你可以:
使用由两个查询组成的BooleanQuery,并对它们设置单独的提升(请参阅)
使用CustomScoreQuery(有点冗长的示例)
当我试图在一个包含特殊字符的术语中使用通配符进行查询时,我遇到了一个问题。
例如,如果我索引“Test::Here”,我将使用通配符?搜索“TE?T\:\:Here”(注意:我转义了“:”)。我没有得到任何结果。我使用标准Analyzer和queryparser进行索引和搜索
有人遇到过类似的问题吗?StandardAnalyzer使用StandardTokenizer,因此Test::Here被视为两个令牌:Test和Here。通配符查询不会在分析器中运行,因此最终会将冒号与不包含冒号的术语进
作为Lucene查询的一部分,是否可以从结果中排除少于N个术语或小于给定大小的文档
完整的故事:我有一个包含许多文档的Lucene索引。有的很大,有的很小,可能只有几个字。我想运行一些测试,但只能在大小合理的文档上运行。如何筛选出小文档?目前,我正在获取术语频率向量并删除少于N个术语的文档:
BooleanQuery q = some query...
TopDocs top = indexSearcher.search(q, size);
Collection<Integer> d
标签: Lucene
lucene.netcontainsstartswith
在Lucene.NET 3.0中搜索和索引的最佳方式是什么,以使结果按以下方式排序:
以完整查询文本(作为单个单词)开头的结果,例如“Bar Acme”
以搜索词开头的结果,例如“Bart Simpson”
以全字形式包含查询文本的结果,例如“全国律师协会”
以片段形式包含查询文本的结果,例如“联合调酒师公司”
示例:搜索酒吧
有序结果:
棒顶点
月球酒吧
巴特·辛普森
全国律师协会
国际调酒师协会
Lucene通常不支持基于字段中的位置进行搜索/评分。如果您在每个字段前面加上一些已知的fiel
标签: Lucene
information-retrieval
我在实验室用Lucene做实验。我制作了4个索引(独立索引),其中一个索引只有标题,而另一个索引有摘要,另一个索引有主题。最后一个具有所有字段
现在我发现只使用标题的索引的搜索时间比其他3个索引的搜索时间要长得多。这似乎与直觉相反,因为与其他索引相比,索引的大小很小。可能的原因是什么
下面是我用于基准测试的代码
public class PrecisionRecall {
public static void main(String[] args) throws Throwable {
Fi
如何使lucene索引字段不区分大小写。
我的意思是,有没有办法在查询中使用小写索引字段,而不是值
我无法将整个查询转换为小写,因为它会影响使用空格分析器的其他查询
Query.extractterms->方法返回了术语数组,但如果输入包含通配符,即*
我需要这个,因为我有小写的索引字段
如果我有一个字段是actor的索引,我应该能够得到包含actor:abc和actor:abc的查询结果
有什么想法吗?一个解决方案是创建自己的分析器并添加LowerCaseFilter指令
以下是一个不区分大小
我有一个简单的问题,我无法回答搜索周围或搜索其他问题:我正在索引一个包含以下代码的文件名的字段:
添加(新文本字段(字段\文件名,文件名,字段.存储.是))
如果我为hello.jpg编制索引,然后用“hello.jpg”键搜索,就会找到条目(到目前为止还不错)。然而,如果我用“hello”搜索,我不会得到任何点击。如果在编制索引时用另一个标点符号替换“.”,则它可以工作。如果我避开“.”,它也可以工作(例如,索引“hello\.jpg”,我发现它在搜索“hello”)
Lucene如何处理圆点
标签:elasticsearch Lucene
fuzzy-search
我在Elasticsearch索引中有一个对象,它有一个嵌套对象,它是一个字符串列表。
我想用精确和模糊的方式来与这个列表进行交集。
例如,我的浏览器名称在索引中的版本如下:
{
"browsers": [
{
"name": "Chrome 38"
},
{
"name": "Firefox 32"
},
{
"name": "Safari 5"
}
]
}
请求可以是:
[
{
"nam
请指导我如何在lucene.net中使用日语分析器(lucene gosen)。还向我推荐一些支持日语的Lucene.net优秀分析器。Lucene Gosen分析器似乎没有移植到Lucene.net。您可以在他们的服务器上发出请求,也可以通过移植请求并提交请求来帮助他们
一旦该分析器存在并使用文章-使用其基本代码,只需更改分析器:
string strIndexDir = @"D:\Index";
Lucene.Net.Store.Directory indexDir = Lucene.Net
我有一些文件的内容如下:
PERSON (filename)
Keanu Reeves
Carrie-Anne Moss
Laurence Fishburne
Hugo Weaving
我想给出一个人的名字,然后得到文件名(person)。我使用了OpenNPL DictionaryNameFinder,我可以得到它。但是,在我的场景中,查找短语很少与确切的名称匹配。因此,我希望能够进行模糊字符串匹配,例如,给Carrie Anne Moss或Reeves Keanu并得到PERSON
我能用
是否可以将图像存储在Elasticsearch集群中?如果是,那么是否有关于工作流程的资源?我检查了以下链接:
由于我们必须处理大型图像文件(超过500GB),我们计划使用HDFS。将整个图像存储在Elasticsearch中不会有太大的好处,因为如果图像被缩放/剪切,然后用作查询,它将给出不正确的结果。您需要什么取决于为什么要为这些图像编制索引
在我的例子中,我需要找到一个经过缩放或裁剪的图像在我的数据库中是否有一个紧密的匹配。我正在提取图像的局部描述符(SIFT/SURF),并使用它们构建E
我一直在尝试使用Lucene在字段中提供的readerValue()为字段编制索引。问题是这些术语没有被编入索引。这是代码中有趣的部分:
IndexWriterConfig config=newindexwriterconfig(newsimpleanalyzer());
IndexWriter IndexWriter=新的IndexWriter(目录,配置);
index writer.deleteAll();
String str=“要索引的一些随机文本”;
读卡器=新的StringRead
我正在尝试使用以下代码获取字段的唯一值:
query.set("q","*:*" );
query.setGetFieldStatistics(true);
query.setGetFieldStatistics("popu_s");
QueryResponse rsp = solr.query(query);
FieldStatsInfo stats = rsp.getFieldStatsInfo().get("popu_s");
System.out.println(stats.get
标签: Lucene
full-text-searchhibernate-search
我已经搜索了很多次,但无法解决我的问题,
这是我的密码:
BooleanJunction<BooleanJunction> booleanJunction = queryBuilder.bool();
String[] fields = new String[]{"field1","field2","field2"};
MultiFieldQueryParser mfqp = new MultiFieldQueryParser(fields,new Stand
索引时间字段提升(field.setBoost(boost))和查询时间提升(query.setBoost(boost))
Lucene的FAQ似乎与javadoc冲突。(Lucene 4.9.0)
:
索引时间字段boost(field.setBoost(boost))是一种表达“此文档的标题值是大多数文档标题的两倍”的方式。查询时间提升(Query.setBoost(boost))是一种表达“我关心查询的这个子句上的匹配是我关心查询的其他子句上的匹配的两倍”
如果在每个文档上设置索引时间字段
我了解到,ES碎片只不过是一个lucene索引,可以是INT.MAX-128(约20亿),但我在ES参考上找不到这一场景是如何处理的?ES是否失败或将另一个碎片分配给具有相同路径的文档
或者这是我们在设计索引策略时需要提前计划的吗?在设计索引结构时,您需要考虑到这一点,并根据您希望在索引中存储的文档数量为每个索引提供足够的碎片。因为我处理Elasticsearch已经超过20年了,我从来没有看到过达到这个极限。你将有其他问题与你的索引,有20亿份文件碎片,直到你击中这个问题。
标签:elasticsearch Lucene
search-engine
我们知道,使用Lucene或著名搜索引擎Google的elasticsearch将保持索引文档中单词的偏移距离,以获得更好的结果。上述两种软件都对大量数据执行索引和搜索。内部高效快速的特殊索引(或数据结构)或算法是什么?那么费用(时间和空间)呢?是否有网页或文档解释Google或elasticsearch(lucene)使用的基于单词偏移距离的算法?下面是一张我想自己创作的图片
检查TF-IDF
这几乎就是它。检查TF-IDF
就我所知,TF-IDF概念是一个文档索引的概念,而不是近似搜索的概念
标签:elasticsearch Lucene
full-text-searchaggregateaggregation
首先,如果我使用的术语不正确,我道歉,因为我每天都在学习elasticsearch,可能会使用不正确的短语
在花了几天的时间试图弄明白这一点,并把我的头发拔出来之后,我似乎每次都在碰壁
我试图让elasticsearch为每个返回的结果提供一个文档计数,我将在下面提供一个示例
上述查询返回以下结果:
{
"took": 37,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"fa
我有一个多匹配搜索查询,我以前根据客户端代码术语过滤器限制了搜索结果。这很有效
我现在需要进一步限制结果,因为某些用户应该只能返回有限零件或产品ID的结果。零件/产品ID将有所不同,并将通过应用程序逻辑确定
正如下面这个不起作用的示例所示,我正在努力解决的是如何为每个索引中的ID应用术语过滤器
GET parts,products/_search
{
"size": 20,
"query": {
"bool": {
"must": [],
"filter"
我今天刚刚投入Elasticsearch,我正试图用一个类似的Elasticsearch查询替换我现有的lucene.net实现模糊搜索
我正在使用Elasticsearch.Net ElasticLowLevel客户端
通过docker将其作为我的服务器运行
docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.4.
标签:elasticsearch Lucene
full-text-searchinformation-retrievalwhoosh
假设我有一堆文档,每个文档都是句子列表
现在,当我输入一个查询时,查询中恰好在一个句子中的单词(无序)应该排名更高
所以问题是,如果一个句子中存在所有关键词,那么排名会更高,而不是在不同的句子中定义关键词
我正在使用asp.NET3.5开发一个工作门户
我已经使用Lucene实现了求职和简历搜索功能。
想知道Lucene性能优化、可扩展性等方面的提示/建议(如有)
非常感谢 您应该记住的一件事是,在大型安装(如故障转移场景或分布式系统)中群集或复制lucene索引非常困难。因此,您应该有一种复制索引作业或整个数据库的好方法。如果使用排序,请注意比较器的大小。使用排序时,对于搜索者返回的每个文档,排序对象中的每个SortField都将存储一个comparator对象。根据文档的大小和要排序的字段的数
我的项目中有一个场景,我们使用Lucene进行搜索。我正在索引许多字段。
现在,我将typeId存储为这些字段之一。
用户需要搜索类型文本。但问题是类型文本可以稍后修改。但重新编制索引不是一种选择。需要一些更好的解决方案,所以请Lucene用户为我提供一些解决方案
我能想到的解决方案是检查搜索文本是否为TypeText,然后将搜索文本处理为TypeId:GuidValue,然后启动查询
请Lucene用户提供一些更好的想法。我对Lucene很陌生,了解Lucene提供的各种查询类型,但我不知道如
使用Lucene的标准分析仪。有问题的标题字段未存储、已分析。查询如下:
title:"Some-Url-Friendly-Title"
在Luke中,此查询被正确地重新编写为:
title:"some url friendly title" (- replaced by whitespace, everything lowercased).
我认为Lucene.net版本应该是:
new TermQuery(new Term("title","Some-Url-Friendly-Title
我正在使用Lucene为文档编制索引,并搜索$5000和90%等值,但在我的搜索结果中,我发现standardanalyzer在为代码编制索引时删除了$和%。所以我只有一个没有$和%符号的普通数字。我已经尝试了空白分析器和简单分析器,但是他们不考虑数字。是否有任何方法可以使StandardAnalyzer不删除索引文档中的$和%
我当前的indexwriter代码如下所示:
private IndexWriter createWriter() throws IOException {
F
上一页 1 2 ...
43 44 45 46 47 48 49 ...
下一页 最后一页 共 78 页