问题标签 [edismax]

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 回答
222 浏览

solr - 我的 multiValued 字段没有匹配

使用 edismax defType 和 multiValued 字段时,我没有得到匹配。

和 schema.xml 定义。

当我检查文档时,会返回一个完全匹配的文档。

但是当我执行以下查询时,numFound 为 0。

multiValued="false" 字段不会发生这种情况。

有任何想法吗?

0 投票
1 回答
370 浏览

solr - 反向 Solr 范围查询

我正在使用 SOLR 进行一些数据分析,但我被困在一个可能为我提供一些巨大价值的部分。

我有一个 solr 集合,其中包含许多范围的数字字段,例如:

每个最小/最大组合提供一个价格范围,高/中部分是由当前组中的项目数量按该范围得出的,我不打算讨论一些时髦的数学。

我需要用商品价格查询 solr 并取回一个价格在某个范围内的文档,我需要能够为其分配权重,以便高字段优先于 med 字段。这本质上是一个反向 RANGE 搜索。

我正在查询其他字段,所以这应该包含在权重中,这也不能在 fq 中,因为如果项目不符合这个条件,那么它可能会匹配其他字段。

到目前为止,我能够组装这个函数查询:

其中 8 是我将传递的价格,基本上这是检查价格是否在任何范围内,如果是,我将返回一个值,5 表示高,3 表示中,1 表示低. 理想情况下,我想将其包含在常规权重中,但我无法将其添加为子查询。此外,如果我尝试增强它,我会返回“无限递归检测到解析查询'pr_high_max:[8 TO *]'”

有没有人遇到过这样的事情?有任何想法吗?

此外,我可以控制正在进行的数据,因此如果这会使解析更容易,我可以轻松地对其进行按摩以以不同的方式表示范围。

提前致谢

0 投票
1 回答
246 浏览

java - Solr 查询执行

像下面这样的查询将如何执行,按什么顺序执行

我知道执行此查询时,将返回 fieldList 中提到的字段。我不明白的是如何使用指定的查询字段搜索“samplestring1”和“samplestring2”

如果可以用 SQL 来说明,我想我将能够理解搜索是如何发生的(只是为了了解幕后发生的事情)

以下是查询。请看一下,让我知道它在内部是如何工作的。query=samplestring1 AND samplestring2 defType: edismax queryFields: Exact_Field1^1.0 Exact_Field2^0.9 Field1^0.8 Field2^0.7 fieldList: Column1, Column2 resultRows: 10 startRow: 0

PS samplestring1 AND samplestring2 是查询中的一些测试字符串

字段模式示例

0 投票
3 回答
471 浏览

solr - SOLR eDISMAX 产品搜索

我是 SOLR 的新手,正在实施它来搜索我们的产品目录。我正在品牌名称、显示名称和类别字段上创建 ngram 和边缘 ngram。

我正在使用 edismax 并将 qf 定义为 displayname_nge displayname_ng category_nge category_ng brandname_nge brandname_ng。

当我搜索“维生素 c”(不带引号)时,我得到了所有的维生素。如果我用引号括起来,那么我只会得到维生素 c。问题是我不能总是用引号将查询字符串括起来,因为一个人可能会输入“chewable Vitamin c”或“vendor x Vitamin c”。我已经尝试了 mm 参数,但没有运气。我也尝试过应用不同的提升水平,但仍然没有得到预期的结果。

任何建议将不胜感激。谢谢

0 投票
1 回答
168 浏览

solr - 你能在不使用 Solr 的情况下使用 eDismax

我的应用程序使用 Lucene 4.1 并提供两种不同的搜索语法,标准查询解析器语法和 Solr 的近似 dismax 搜索。Solr 现在具有结合了这两者的 eDismax 搜索,这对于我的应用程序来说是完美的,因此我可以提供一个支持这两种语法的单一界面。

但是 eDismax 在最新版本的 Lucene 中是否可用,因为我不需要/不想为 Solr 重写我的代码?

0 投票
1 回答
801 浏览

solr - Solr 我用 dismax 得到结果,但没有用 edismax

当我在我的 solr 3.6.2 debian 服务器上使用 dismax 和 edismax 执行两次相同的查询时,我得到了 dismax 4 结果,如预期的那样,但 edismax 0 结果。

下面你会发现 3 个在同一索引上运行的示例。该索引包含一条记录“label:M025 Some-Example Record”

  1. Edismax 与:q=M025 没有结果。
  2. Dismax 与:q=M025 找到 4 个项目。
  3. Edismax 与:q=找到 1 个项目的示例。

为什么 EDISMAX 没有找到“M025”而是“Example”?

Solr 架构

示例 EDISMAX

示例 DISMAX

带有名称的 EDISMAX 示例

0 投票
1 回答
198 浏览

java - 在 SOLR 中使用带有短语字段的 unigram

我正在使用 solr 搜索文档并在一个字段上进行匹配,然后希望根据出现在其他字段中的关键字进行提升。

前任。

所以如果我搜索

我有一个结果

查询从描述中得到提升,而不是从关键字 1 和关键字 2 中得到提升。我知道这是因为 pf 在关键字 1 中搜索“foo bar”(带有短语 slop),而不是“foo”“bar”。我想根据单个单词进行提升。没有插件这可能吗?

我想到的事情:

我知道像 pf2 和 pf3 这样的选项,但基本上我正在寻找的是 pf1。我希望能够提升单个单词。

我不只是将关键字 1、关键字 2 添加到 qf 的原因是我不希望它们被匹配。由于关键字二有一些可能与文档没有任何关系的术语。

我可以在查询时分解查询并使用 bq

但我想为不同的字段分配不同的权重,构建查询很麻烦。

总之,我想要一个参数 a la pf1。

0 投票
1 回答
876 浏览

solr - Solr 的最小匹配(mm)和短语字段(pf)匹配

在我的请求处理程序中配置的最小匹配是 2。我的搜索查询包含两个词,即 q=termOne termTwo&defType=edismax。

这意味着必须在文档中找到 termOne 和 termTwo 才能被视为匹配项。我还在请求处理程序中将某些字段指定为 qf(查询字段)和 pf(短语字段)。

现在,文档在 qf 中定义的字段之一中匹配 termOne,并且短语“termOne termTwo”与在 pf 中定义的字段之一匹配。即使得到了这些匹配,文档也不会出现在结果中,因为它不满足 mm 标准。

有什么方法可以使 pf 中的匹配也有助于 mm 并且文档显示在结果中?

谢谢。

0 投票
2 回答
1052 浏览

solr - Solr dismax 行为 - 标点符号和空格分割

我有一个 Solr 4.7.0 实例,索引中有 200 000 个文档(文件系统上每个文件一个文档),供多个用户使用。文档由关键字标识,这些关键字被索引并存储在一个名为“signature_1”的字段中。在索引期间,我删除了所有用空格替换的标点符号(感谢 ScriptUpdateProcessor),因此我的关键字在索引和字段 signature_1(字段类型签名)的存储部分中都用空格分隔。

我希望在查询期间有相同的行为:如果有人搜索

美国广播公司

我希望 Solr 进行以下搜索(使用 OR 运算符,dismax):

美国广播公司

所以基本上,我只是想让 Solr 在文档的关键字之间搜索,标点符号被删除。

上面的例子运行良好,但在某些情况下它不是这样运行的。查询

公元前

Dismax 将查询拆分为

(+(DisjunctionMaxQuery((signature_1:a)) DisjunctionMaxQuery((signature_1:"b c"))) ())/no_coord

这弄乱了我的结果的相关性(即顺序)。我尝试使用 autoGeneratePhraseQueries="True" 但没有效果。

所以我希望 Dismax 总是在空格和标点符号上分开,或者永远不要这样做(结果是一样的)。知道如何做到这一点(无需创建我的 Java Dismax 类)吗?

以下帖子与我的问题有关:

0 投票
3 回答
4720 浏览

search - Solr 条件查询字段 (qf)

是否可以根据某些条件在 Solr 中定义查询字段?例如,我有三个字段文本、标题和产品。 solr 配置定义:

我在这里寻找的是仅在满足某些条件时才将“产品”作为可搜索字段包含在内,例如,如果作者:“汤姆”,那么也可以在产品中搜索。

有没有办法在查询期间使用 edismax 做到这一点?

我的替代方法是在索引期间将产品信息添加到文档的文本或标题(其中作者 = Tom),以便可以搜索。但是,如果可能的话,我会尽量避免这种情况。

任何指针将不胜感激。

-谢谢