jjzjj

java - 基于 Solr 规则的提升

我正在使用Solr-5.0.0。我正在搜索字段product_name。我需要添加一些规则以获得相关结果。如果我搜索一个词,如果存在完全匹配,它应该排在第一位。例如:如果我搜索laptop,它应该首先返回与laptop完全相同的product_name。如果我搜索一个以上的词,它应该遵守规则1。同时最小词长距离的名称排在第一位。例如:如果我搜索delllaptop,它应该首先返回Delllaptop而不是dellinspironlaptop。如果我搜索单词,它不应返回包含with或without单词的结果。例如:在搜索laptopbag时,它不应该首先给出delllaptopwithb

java - Solr 不会覆盖 - 重复的 uniqueKey 条目

我对Solr5.3.1有疑问。我的架构相当简单。我有一个uniqueKey,它是字符串形式的“id”。索引、存储和必需的、非多值的。我首先使用“content_type:document_unfinished”添加文档,然后覆盖相同的文档,具有相同的id但另一个content_type:document。然后该文档在索引中出现两次。同样,唯一的uniqueKey是字符串形式的“id”。该id最初来自mysql-indexprimaryint。而且看起来这种情况不止发生一次:http://lucene.472066.n3.nabble.com/uniqueKey-not-enforced

java - 在 Solr(J) 中搜索嵌套文档

我为PDF文档实现了一个简单的添加工具。我首先创建一个包含所有文档的主文档(SolrInputDocument)。它获取作者、文件哈希、关键字、'content_type=document'等字段。之后我为每个页面生成一个SolrInputDocument,这个对象得到一个像'parentID_p01'这样的id,页面作为一个字段值,'content_type=page'usw。最后,我使用addChildDocument()将所有页面文档添加到我的主文档中。现在我的问题是,如何在所有文档的所有页面中执行给定单词的搜索,例如:Document1.pdf'thisismydoc1titl

java - RemoteSolrException : ERROR: [doc=2] unknown field 'firstName'

我写了一个Spring项目,它使用SolrInputDocument从表中添加数据。我使用了doc.addField()方法doc.addField("actorId",a.getId());doc.addField("firstName",a.getFirstName());(仅发布其中的一小部分)用于添加我从MySql检索到的数据。当我尝试将这些值添加到SOLR索引时,出现以下错误。线程“主”中的异常org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException:错误:[doc=2]未知字段“firstNam

mysql - Solr 和 MySQL,如何保持更新的索引,如果它很简单,是否还需要数据库?

我是Solr的初学者,所以请多多包涵。:)在我当前的项目中,我有一个非常简单的数据库-只有1个包含4个字段的表:id、name、subject、msg。据我了解,每次添加(或删除)新记录时,我都需要将该记录添加到索引中,基本上执行两个操作:将记录插入数据库并将其添加到索引中。这是标准程序,还是有办法指示Solr在某个时间间隔或每当有更新时自动重新索引数据库表?此外,由于表格非常简单,将此信息存储在数据库中是否有意义?为什么不将它保留在Solr索引中,考虑到我希望可以按名称、主题和消息搜索记录?我的设置是Java、Hibernate、MySQL和Solrj。

java - 架构中现有字段的 Solr 复合唯一键

我在solr中有一个名为LocationIndex的索引,其字段如下://andsomemorefieldssolr_id但现在我想更改架构,以便唯一键必须由两个已经存在的字段solr_id和solr_ver组成......如下所示://andsomemorefieldssolr_ver-solr_id搜索后我发现可以通过向模式添加以下内容来实现:(引用:SolrCompositeUniquekeyfromexistingfieldsinschema)docid_suserid_sidid--所以我改变了架构,最后它看起来像:solr_versolr_ididid-//andsomem

java - 使用 solr 中的函数进行过滤和排序

我有这样的文档:{attr_a:1},{attr_a:2,changes_user1_a:3}第二个文档说user1进行了尚未“提交”且对其他用户不可见的更改。字段是动态的:问题是,用户1需要根据他的新值进行过滤、分页和排序,而其他用户需要根据旧值执行此操作。我正在考虑通过以下方式解决这个问题:如果user1想按attr_a进行过滤和排序,我会发出类似的查询fq=def(changes_user1_a,attr_a):'somefilter'&sort=def(changes_user1_a,attr_a)asc但是,这种方法会为fq生成以下错误:"error":{"metadata"

java - 如何使用 SolrJ 获取 solr 服务器中所有核心的列表

我们正在使用Solr进行搜索,并将数据分片到多个核心。我们每周有一个核心数据,因此我们每周都在动态创建和删除核心。如何查询solr服务器以获取其所有核心的列表?JavaDoc说我可以使用coreAdminHandler.getCoreContainer().getCoreNames(),但我不确定如何构建coreAdminHandler对象。 最佳答案 对http://localhost:8983/solr/admin/cores?action=STATUS的请求(当然替换你自己的主机/端口)将返回所有核心。

java - 比 Solr 更喜欢 Apache Lucene 的情况?

使用Solr1.4有几个优点(开箱即用的分面搜索、分组、复制、http管理与luke,...)。即使我在我的Java应用程序中嵌入了搜索功能,我也可以使用SolrJ在使用Solr时避免HTTP权衡。完全推荐SolrJ吗?那么,您什么时候会推荐使用“纯Lucene”?它具有更好的性能还是需要更少的RAM?它的单元测试性更好吗?PS:我知道thisquestion. 最佳答案 如果您有Web应用程序,请使用Solr-我尝试过将两者集成,而且Solr更容易。否则,如果您不需要Solr的功能(想到的最重要的功能是分面搜索),则使用Lucen
12