问题标签 [faceted-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
922 浏览

performance - UnInvertedField.getUnInvertedField() 和 SegmentReader$CoreReaders.getTermsReader 上的多个阻塞线程

我们正在从 Solr 1.3 升级到 Solr 1.4.1。在使用 Solr 1.3 时,我们在“org.apache.lucene.store.FSDirectory$FSIndexInput.readInternal()”上看到了多个阻塞的活动线程。

为了利用 NIO 的优势,在升级到 Solr 1.4.1 时,我们在 "org.apache.solr.request.UnInvertedField.getUnInvertedField() &

SegmentReader$CoreReaders.getTermsReader”。因此,QTimes 从几百毫秒飙升到几千毫秒。单个查询甚至高达 30-40 秒。

  • 数千个查询后会出现多个阻塞线程。
  • 我们没有对相同字段进行分面和排序。
  • 我们的构面字段是多值文本字段,但不存在大文本值。
  • 索引大小 - 大约 10 GB
  • 我们没有在 schema.xml 中指定任何分面方法。
  • 我们的字段值缓存设置是:

有人可以告诉我们为什么我们会看到这些被阻止的线程吗?

此外,如果它们与我们的字段值缓存相关,那么大小为 175 的缓存将被很少的初始查询填满,然后我们应该看到多个阻塞线程?

如果我们有 "facet.method = enum" 会有什么不同?

这是否都与 fieldValueCache 相关,还是我们需要设置一些其他配置来避免这些阻塞线程?

谢谢,

拉奇塔

缓存值示例:

facetField1_27443 :
{field=facet1_27443,memSize=4214884,tindexSize=52,time=22,phase1=15,nTerms=4,bigTerms=0,termInstances=6,uses=1}

facetField1_70 :
{field=facetField1_70,memSize=4223310,tindexSize=308,time=28,phase1=21,nTerms=636,bigTerms=0,termInstances=14404,uses=1}

facetField2:{field=facetField2,memSize=4262644,tindexSize=3156,time=273,phase1=267,nTerms=12188,bigTerms=0,termInstances=1255522,uses=7031}

“org.apache.solr.request.UnInvertedField.getUnInvertedField() - BLOCKED”的堆栈跟踪

在 org.apache.solr.request.UnInvertedField.getUnInvertedField (UnInvertedField.java:837) 在 org.apache.solr.request.SimpleFacets.getTermCounts (SimpleFacets.java:250) 在 org.apache.solr.request.SimpleFacets.getFacetFieldCounts (SimpleFacets.java:283) 在 org.apache.solr.request.SimpleFacets.getFacetCounts (SimpleFacets.java:166) 在 org.apache.solr.handler.component.FacetComponent.process (FacetComponent.java:72) 在 org. org.apache.solr.handler.RequestHandlerBase.handleRequest (RequestHandlerBase.java:131) 中的 apache.solr.handler.component.SearchHandler.handleRequestBody (SearchHandler.java:195) org.apache.solr.core.SolrCore.execute ( SolrCore.java:1316) 在 org.apache.solr.servlet.SolrDispatchFilter.execute (SolrDispatchFilter.java:338) 在 org.apache.solr.servlet.SolrDispatchFilter.doFilter (SolrDispatchFilter.java:241) 在 com.caucho。server.dispatch.FilterFilterChain.doFilter (FilterFilterChain.java:87) 在 com.caucho.server.webapp.WebAppFilterChain.doFilter (WebAppFilterChain.java:187) 在 com.caucho.server.dispatch.ServletInvocation.service (ServletInvocation.java: 266) 在 com.caucho.server.http.HttpRequest.handleRequest (HttpRequest.java:270) 在 com.caucho.server.port.TcpConnection.run (TcpConnection.java:678) 在 com.caucho.util.ThreadPool$Item .runTasks (ThreadPool.java:721) 在 com.caucho.util.ThreadPool$Item.run (ThreadPool.java:643) 在 java.lang.Thread.run (Thread.java:595)handleRequest (HttpRequest.java:270) at com.caucho.server.port.TcpConnection.run (TcpConnection.java:678) at com.caucho.util.ThreadPool$Item.runTasks (ThreadPool.java:721) at com.caucho .util.ThreadPool$Item.run (ThreadPool.java:643) 在 java.lang.Thread.run (Thread.java:595)handleRequest (HttpRequest.java:270) at com.caucho.server.port.TcpConnection.run (TcpConnection.java:678) at com.caucho.util.ThreadPool$Item.runTasks (ThreadPool.java:721) at com.caucho .util.ThreadPool$Item.run (ThreadPool.java:643) 在 java.lang.Thread.run (Thread.java:595)

org.apache.lucene.index.SegmentReader$CoreReaders.getTermsReader() - 阻塞

在 org.apache.lucene.index.SegmentReader$CoreReaders.getTermsReader (SegmentReader.java:170) 在 org.apache.lucene.index.SegmentTermDocs。(SegmentTermDocs.java:52) 在 org.apache.lucene.index.SegmentReader.termDocs (SegmentReader.java:987) 在 org.apache.lucene.index.IndexReader.termDocs (IndexReader.java:1102) 在 org.apache。 lucene.index.SegmentReader.termDocs (SegmentReader.java:981) 在 org.apache.solr.search.SolrIndexReader.termDocs (SolrIndexReader.java:320) 在 org.apache.solr.search.SolrIndexSearcher.getDocSetNC (SolrIndexSearcher.java: 640) 在 org.apache.solr.search.SolrIndexSearcher.numDocs (SolrIndexSearcher.java:1422) 在 com.askme.solrenhancements.facet.ExtendedFacet .getCustomFacetCount (ExtendedFacet.java:132) 在 com.askme.solrenhancements。

0 投票
2 回答
4117 浏览

ruby-on-rails - Ruby on Rails 中带有 Sunspot 的日期范围方面

我正在使用Sunspot在Ruby on Rails 3 应用程序中搜索事件(派对、音乐会等) 。

我设法在几个不同的类别类型上设置了自由文本搜索和方面搜索。

现在,我被我的下一个任务困住了。我想设置与事件发生时间相关的方面。

我想要描述相对日期/时间范围(例如“今天”、“本周末”、“下周末”)和绝对日期/时间范围(例如“2011 年复活节假期”、“2012 年元旦”)的方面。 .. 日期时间范围有时会相互重叠。

我在 Stackoverflow 上的 Sunspot API 文档、Sunspot wiki 中浏览过,阅读并阅读了大量文章和博客。人们正在写它是可能实现的,但我没有找到让我理解如何做到这一点的示例或实现想法。

有什么建议么?

由于我的问题不在我的代码中,因此我不发布任何代码。Event 类有一个名为“start_time”的 DateTime 实例。我明白我的工作是定义绝对日期/时间范围何时出现在日历中。

最好的祝福,

./斯蒂芬

PS我说我是新手吗?;-) DS

0 投票
4 回答
8262 浏览

php - Magento,自定义产品列表

我根据 Mage_Catalog_Block_Product_List 制作了自己的产品列表页面:

应用程序/代码/本地/法师/目录/块/产品/Special.php:

我将其包含在中心列的 CMS 页面中:

问题是:产品列表显示得很好,但我的左栏中没有分层导航。

这很奇怪,因为我使用的模板与普通列表完全相同。

我检查了几件事:

  • Mage_Catalog_Block_Product_Special 只是一个代理类。这行不通。即使我在我的 CMS 页面上使用块类型“catalog/product_list”,我也不会获得分层导航。
  • 没有覆盖关键核心类的扩展。
  • 我还尝试创建自己的模块并将其列在例如“mycatalog”下。这导致完全相同的问题。

我感觉这与试图在 CMS 页面上包含产品列表有关,但我无法找到确切的问题。

对此的任何帮助将不胜感激。

0 投票
1 回答
1611 浏览

ruby-on-rails - 思考 Sphinx 分面搜索实现示例?

我正在整理一个存储库类型的 rails 3 站点。我已经安装了 Thinking Sphinx 并在我的网站上工作,因为我可以输入类似的网址localhost:3000/articles?search=test&page=2,它会返回预期的结果。

我是 Rails 的新手(以及一般的 Web 开发人员);我想我可以管理这方面的模型和控制器方面,但到目前为止的观点让我很难过。我有一个侧边栏我想用作搜索界面。我最接近的是这个(作为侧边栏部分的一部分呈现):

搜索方法在我的文章#index 控制器中,当我在浏览器指向该页面(路由为/articles)时对其进行测试时,它按预期工作,但使用了这个奇怪的 url: localhost:3000/articles?utf8=✓&search=test&commit=Search。当浏览器第一次指向根路径时,什么也没有发生。

所以,我认为这些是我需要解决的主要问题:

  1. 编辑 - 已解决(见下文)
  2. 我应该将搜索方法移动到他们自己的控制器,还是应该成为文章控制器的一部分?目前,Article 将是唯一被索引的模型。
  3. 编辑 - 已解决(见下文)
  4. 有没有人有使用 Rails 3 和 Thinking Sphinx 的多面搜索视图的任何好的示例代码?就像我说的,我是一个新手,对视图实现略读的文档感到有些慌乱。但是,只要代码相当完整,我就相当擅长阅读和解释代码。

提前致谢!

解决了:

  1. 如何在尝试搜索之前让“搜索”按钮调用 index 方法?(我已经通过替换解决了这个问题@searcharticles_path

  2. 解决了 using will_paginate,我以前遇到过麻烦,但现在似乎可以工作了。

0 投票
4 回答
43144 浏览

database - 什么是分面搜索?

在全文搜索的上下文中,分面搜索到底是什么?

我什至从Wikipedia上读到过它,但我无法完全理解它的用途/好处。希望社区可以通过一些好的例子来回答/扩展和解释。

注意:我们正在评估/研究不同的开源全文搜索引擎,而且我主要看到分面搜索被列为其中一项功能。所以我试图评估这是否有助于我们的应用需求。

0 投票
1 回答
1450 浏览

django - Django Haystack/Solr:对模型进行构面,但仅显示来自 ForeignKey 字段的结果

我在 Django 中有两个模型,如下所示(在伪代码中)

有一个1:M。一种药物可以有多种用途。

我需要关注Application但只显示相关Medicine对象的字段。SQL中的DISTINCT之类的东西。

用 haystack 实现这一目标的最直接方法是什么?

我是SearchIndex为了Medicine还是Application?如果我SearchIndexApplication,我如何检测/过滤重复的Medicine对象?

PS:我知道 Solr 的开发版本中有 Field Collapsing 功能,但我想避免这样做,因为它是庞大的数据库和性能关键。

0 投票
2 回答
2228 浏览

javascript - jquery部分展开和折叠

我正在使用 jquery 'contains' 选择器来确定单击 div 时要执行的操作...我想展开或折叠分面导航的一部分。

但是,看起来“包含”选择器可能仅在最初加载 DOM 时查看 div 的内容,并且看不到由较早的 jquery 调用换出的较新内容。

我有一个主要功能版本在这里工作......只需要一点点推动即可使顶部正确折叠:http: //jsfiddle.net/brianadkins/nAabP/


HTML:


Javascript:

0 投票
2 回答
6171 浏览

lucene - Lucene/Solr 如何在多字段/分面搜索中实现高性能?

语境

这是一个主要关于 Lucene(或可能是 Solr)内部的问题。主要主题是分面搜索,其中搜索可以沿着对象的多个独立维度(方面)进行(例如汽车的大小、速度、价格)。

当使用关系数据库实现时,对于大量构面,多字段索引没有用,因为可以按任何顺序搜索构面,因此使用特定有序多索引的机会很小,并且创建索引的所有可能排序是难以忍受。

Solr 被宣传为可以很好地处理分面搜索任务,如果我认为正确的话,它必须与 Lucene 连接(据说)在多字段查询(文档的字段与对象的方面相关)上表现良好。

问题

Lucene的倒排索引可以存储在关系数据库中,自然取匹配文档的交集也可以通过使用单字段索引的 RDBMS 轻松实现。

因此,Lucene 应该有一些用于多字段查询的先进技术,而不仅仅是基于倒排索引获取匹配文档的交集。

所以问题是,这种技术/技巧是什么?更广泛地说:为什么 Lucene/Solr 在理论上可以实现比 RDBMS 更好的多面搜索性能(如果是的话)?

注意:我的第一个猜测是 Lucene 会使用一些空间分区方法来分割从文档字段构建的向量空间作为维度,但据我了解,Lucene 并不是纯粹基于向量空间的。

0 投票
1 回答
1955 浏览

solr - 使用原始数据和联合多个方面值的 SOLR 查询

我正在为多面搜索编写 SOLR 查询,并且我的字段中可能包含引号或其他错误字符,因此我使用原始运算符来构造查询。但是,如果用户选择多个方面值,我看不到如何在查询中使用 OR。

例如,以下返回耐克制造商的结果:

以下仅返回阿迪达斯制造商的结果:

以下不返回任何结果:

有没有办法做到这一点?

0 投票
1 回答
3278 浏览

faceted-search - 如何仅使用 solrj 获取 facet.query 结果?

我正在尝试使用 solrj 获取构面查询的结果,但似乎我是否添加构面查询并不重要。无论如何,我得到了相同的文档列表。

所以这个查询返回相同的文档列表......

...使用此查询

唯一的区别是我可以获得与方面查询匹配的文档数量response.getFacetQuery();

我期待它像

有任何想法吗?

谢谢。

顺便说一句,我使用的是 Solr 版本 3.1.0 和 solr-core-3.1.0