Tag: lucene

Lucene相似度的高级解释?

你知道在哪里可以找到Lucene相似度算法的高级解释。 我想理解它,而不必破译搜索和索引所涉及的所有数学和术语。

如何在Hibernate Search中搜索带通配符和空格的字段

我有一个搜索框,根据给定的输入在标题字段上执行搜索,因此用户建议所有可用的标题以插入的文本开头。它基于Lucene和Hibernate Search。 它一直工作,直到输入空间。 然后结果消失了。 例如,我希望“学习H”给我“学习Hibernate”作为结果。 但是,这不会发生。 你能告诉我我应该在这里使用什么呢? 查询生成器: QueryBuilder qBuilder = fullTextSession.getSearchFactory() .buildQueryBuilder().forEntity(LearningGoal.class).get(); Query query = qBuilder.keyword().wildcard().onField(“title”) .matching(searchString + “*”).createQuery(); BooleanQuery bQuery = new BooleanQuery(); bQuery.add(query, BooleanClause.Occur.MUST); for (LearningGoal exGoal : existingGoals) { Term omittedTerm = new Term(“id”, String.valueOf(exGoal.getId())); bQuery.add(new TermQuery(omittedTerm), BooleanClause.Occur.MUST_NOT); } @SuppressWarnings(“unused”) org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery( query, LearningGoal.class); Hibernate类 : @AnalyzerDef(name = “searchtokenanalyzer”,tokenizer […]

如何在lucene 4.0中使用ngram tokenizer?

我正在使用没有空格的文本索引大型文本文件。 目前我有ngram方法生成长度为12的字符串然后我索引它们。 同样的搜索方式,我从用户获取字符串生成12的ngrams,然后用它来构建查询。 在搜索时,请阅读lucene中存在的ngram tokenizer。 但是没有找到任何例子。 如何在lucene 4.0中实现ngram tokenizer?

工作Lucene SearchAfter示例

我正在尝试使用Lucene 4.8.1的SearchAfter方法在Web应用程序中实现搜索结果的分页。 之前已经提出了类似的问题,但是那里接受的答案对我不起作用: Stack Overflow问题:Lucene网页分页 当我以这种方式从头开始创建Lucene ScoreDoc以用作SearchAfter的参数时: ScoreDoc sd = new ScoreDoc(14526, 0.0f); TopDocs td = indexSearcher.searchAfter(sd, query, null, PAGEHITS); 我得到这个例外: java.lang.IllegalArgumentException: after must be a FieldDoc 这似乎与文档相反。 但无论如何,当我创建一个Field Doc时,我得到: java.lang.IllegalArgumentException: after.fields wasn’t set after.fields是一个Object数组,所以我很难设置我可以在URI中传递的信息! 我找不到任何使用SearchAfter的工作代码示例。 我的原始计划显然是创建一个新的ScoreDoc,如前一个问题所示。 任何人都可以建议我可能做错了什么,或链接到SearchAfter的任何工作代码示例? 谢谢!

Lucene搜索结果按自定义顺序列表排序(每个用户都是唯一的)

我已经在我的应用程序中validation了用户,他们可以访问最多500,000个项目的共享数据库。 每个用户都有自己的面向公众的网站,并且需要能够在他们自己的网站上对显示的项目(想想upvote)进行优先排序。 在500,000件商品中,他们可能只有200件优先商品,其余商品的订单不太重要。 每个用户将以不同方式对项目区分优先级。 我最初在这里问了一个类似的mysql问题Mysql结果按列表排序,这对每个用户都是唯一的并得到了一个很好的答案,但我相信更好的选择可能是选择非sql索引解决方案。 这可以在Lucene中完成吗?还有另一种搜索技术会更好吗? PS。 Google会在搜索结果中实施类似的类型设置,如果您已登录,则可以优先处理并排除自己的搜索结果。 更新:重新标记为sphinx,因为我一直在阅读文档,我相信它可能能够做我想要的“每个文档属性值”存储在内存中 – 有兴趣听到狮身人面像大师的任何反馈

Solr Filter Cache(FastLRUCache)占用太多内存并导致内存不足?

我有一个Solr设置。 一个主服务器和两个从服务器用于复制。 我们在索引中有大约7000万份文件。 从站有16 GB的RAM。 操作系统和高清10GB,Solr 6GB。 但是,奴隶们不时会记忆犹新。 当我们在内存不足之前下载转储文件时,我们可以看到该类: org.apache.solr.util.ConcurrentLRUCache$Stats @ 0x6eac8fb88 正在使用高达5Gb的内存。 我们广泛使用过滤缓存,它的命中率为93%。 这是solrconfig.xml中filter缓存的xml 查询结果具有相同的设置,但使用LRUCache并且它仅使用大约35mb的内存。 配置是否有问题需要修复,或者我只需要更多内存用于过滤缓存?

将多值字符串字段添加到Lucene文档中,逗号是否重要?

我正在构建一个Lucene索引并添加文档。 我有一个多值的字段,在这个例子中我将使用Categories。 物品可以有很多类别,例如,牛仔裤可以属于服装,裤子,男士,女士等。 将字段添加到文档时,逗号会有所作为吗? Lucene会不会理睬他们? 如果我将逗号更改为空格会有区别吗? 这会自动使字段多值吗? String categoriesForItem = getCategories(); // returns “category1, category2, cat3” from a DB call categoriesForItem = categoriesForItem.replaceAll(“,”, ” “).trim(); // not sure if to remove comma doc.add(new StringField(“categories”, categoriesForItem , Field.Store.YES)); // doc is a Document 我这样做了吗? 还是有另一种方法来创建多值字段? 任何帮助/建议表示赞赏。

使用Java中的Lucene搜索日期范围?

是否可以使用Java中的Lucene搜索日期范围? 如何根据日期字段和日期范围构建Lucene搜索查询? 例如: 在指定日期之间 在指定日期之前 在指定日期之后 在过去的24小时内 在过去的一周内 在过去一个月内。 [编辑]我正在使用Lucene 2.4.1,我的系统真的很遗产,测试真的很差,所以如果可能的话,我不想升级

更喜欢Apache Lucene而不是Solr的情况?

使用Solr 1.4(开箱即用的分面搜索,分组,复制,http管理与luke,……)有几个优点。 即使我在我的Java应用程序中嵌入了搜索function,我也可以使用SolrJ来避免在使用Solr时进行HTTP权衡。 是否推荐SolrJ? 那么,你什么时候推荐使用“纯Lucene”? 它有更好的性能还是需要更少的RAM? 它是否可以更好地进行unit testing? PS:我知道这个问题 。

包含1亿个字符串的大型文本文件中的高效子字符串搜索(无重复字符串)

我有一个大文本文件(1.5 Gb)有100万字符串(没有重复字符串),所有字符串在文件中逐行排列。 我想在java中进行wepapplication,以便当用户给出一个关键字(Substring)时,他得到包含该关键字的文件中存在的所有字符串的计数。 我知道一种技术LUCENE已经……还有其他方法可以做到这一点。 我想在3-4秒内得到结果。 我的系统有4GB内存和双核心配置….需要在“JAVA ONLY”中执行此操作