仅返回与 Solr 匹配足够 NGram 的结果

2024-02-09

为了使用 Solr 实现某种程度的容错,我开始使用NGramFilterFactory。以下是来自schema.xml:

<field name="text" type="text" indexed="true" stored="true"/>
<copyField source="text" dest="text_ngram" />
<field name="text_ngram" type="text_ngram" indexed="true" stored="false"/>

<fieldType name="text_ngram" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="3" />
    </analyzer>
</fieldType>

我正在使用EDisMax查询处理程序几乎具有库存配置。以下是来自solrconfig.xml:

  <requestHandler name="/browse" class="solr.SearchHandler">
    <lst name="defaults">
      <!-- Query settings -->
      <str name="defType">edismax</str>
      <str name="qf">
        name name_ngram^0.001
      </str>
      <str name="mm">100%</str>
      <str name="q.op">AND</str>
      ...

这工作正常,但给了我很多不相关的结果。使用 Solr 的分析功能,我认为我已经将问题追查到以下原因:

查询被分解为 Ngram。然后 Solr 搜索标记化查询text字段或 NGram 之一text_ngram场地。使用debug=query将打印出以下内容parsedquery当搜索“某物”时:

(+DisjunctionMaxQuery(((text_ngram:som text_ngram:ome text_ngram:met text_ngram:eth text_ngram:thi text_ngram:hin text_ngram:ing) | text:something)))/no_coord

如果我没读错的话,这意味着

  1. 其中一个 NGram 需要匹配或
  2. 原始查询(标记化)需要匹配

现在,这还会发现像“以太网”这样的项目作为 NGram 之一(eth)是一样的。

我的问题是:如何为 NGram 匹配设置更高的阈值?有没有办法说“只有在查询中至少 90% 的 NGram 匹配时才返回该项目”?确保 100% 的 NGrams 匹配是没有意义的,因为这会有效地破坏容错能力。

我想到的另一种方法是仅返回相对于最高结果高于特定分数阈值的结果。这是因为与“以太网”相比,“某物”项目具有非常高的相关性。那么有没有一种方法可以连接到 Solr 以仅返回具有例如的结果。至少是最高结果分数的 1/100?我读到有一种方法可以提供自定义HitCollector但我真的找不到这方面的任何信息。

Thanks!


这个想法是为了实现某种容错搜索。当有人搜索“someting”时,它应该找到“someting”

Solr 的拼写检查器进行模糊搜索,您可以对其设置阈值http://wiki.apache.org/solr/SpellCheckComponent http://wiki.apache.org/solr/SpellCheckComponent .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅返回与 Solr 匹配足够 NGram 的结果 的相关文章

  • Solr 和方面搜索

    当您设置模式时 分面搜索是否内置 或者您是否必须做一些事情来设置它 它基本上可以在您设置为可排序的所有字段上开箱即用吗 那么您只需使用 fq 查询语法 它就会返回构面 xml 以及搜索结果 有没有一篇关于这方面的好文章对您第一次有帮助 是的
  • 更改 SOLR 默认连接

    我正在使用嵌入 SOLR 的应用程序 SOLR 在 Tomcat 的 webapp 区域中像一场战争一样运行 是否有 SOLR 配置允许我切换搜索的默认 SOLR 行为以假定 AND 而不是 OR 作为连接运算符 在您的模式文件中添加 或修
  • 另一个日期时间问题

    我目前有一个这种格式的日期 2010 03 03 10 39 18 这是一个TIMESTAMPMySQL 中的字段 我需要为名为 Solr 的搜索引擎提供以下格式的日期 1995 12 31T23 59 59Z 以下是他们网站上有关日期的一
  • yii2 作曲家更新致命错误

    当我更新我的作曲家以添加yii2 solr扩展我的项目时 我遇到如下错误 The yiisoft yii2 composer plugin requires composer plugin api 1 0 0 this WILL break
  • solr索引嵌套文档

    solr支持嵌套文档吗 有没有更好的方法来实现这种文档
  • apache solr:group by 产生的数据总和

    我们有一个要求 需要按特定字段对记录进行分组 并获取相应数字字段的总和 前任 select userid sum click count from user action group by userid 我们尝试使用 apache solr
  • 将solr 1.4索引升级到solr 3.3?

    我有一个使用 apache solr 1 4 构建的现有索引 我想在 3 3 版本中使用这个现有索引 正如您所知 索引格式在 3 x 之后发生了变化 那么如何才能做到这一点呢 我已经使用 Luke 将现有索引 即 1 4 版本 导出为 XM
  • Solr 您的意思是(拼写检查组件)

    我在我的应用程序中使用 solr 并集成了拼写检查组件 但我遇到了一些问题 第一的 当我输入一个用空格分隔的术语时 他们会给我每个术语的更正 Eg 水 gt 什么术语 但事实是watters 第二 当我输入一些带有错误术语的短语时 尽管其他
  • Solr 动态价格范围和组

    跟进问题 如何获取 solr 结果中的方面范围 https stackoverflow com questions 33956 how to get facet ranges in solr results SolR 查询 价格范围 htt
  • cursorMark是无状态的以及它如何解决深度分页

    作为指定here https cwiki apache org confluence display solr Pagination of Results光标标记是无状态的 但我不明白它是如何解决无状态的深度分页问题的 solr 是否按唯一
  • 如何禁用 solr 管理页面

    对于生产来说 拥有一个甚至不要求登录凭据的 solr 管理员感觉不安全 如何禁用默认的 solr 管理页面 我只是希望我的 web 应用程序使用 Solr 进行搜索词索引 我强烈建议保留管理页面用于调试目的 它在很多情况下拯救了我 有多种方
  • Solr 在 TrieDateField 上按年份过滤

    我的 Solr 模式有一个字段类型tdate班级的solr TrieDateField
  • 从 Solr Admin 删除 solr 文档

    如何使用 SOLR Admin 删除 SOLR 索引中的所有文档 我尝试使用该网址并且它有效 但想知道是否可以使用管理员来完成相同的操作 使用下面的查询之一DocumentSolr 管理 UI 选项卡 XML
  • Solr/Solrj 分页

    我正在创建的 Web 应用程序中使用 solr 和 solrj 来实现索引和搜索功能 我的请求处理程序在 solrconfig xml 中配置如下
  • Solr 中的拼写检查中阈值频率不起作用

    我得到stuck在中间Solr 我只需要最流行的词 w r t query 我用过语音过滤器双方索引和查询但这里的problem是它正在给予术语太多 我只需要几个术语这是非常具体的query 模式 xml
  • 如何在scala中生成n-gram?

    我正在尝试在 scala 中编写基于 n gram 的分离新闻算法 如何为大文件生成 n gram 例如 对于包含 蜜蜂是蜜蜂中的蜜蜂 的文件 首先它必须选择一个随机的 n 元语法 例如 蜜蜂 然后它必须寻找以 n 1 个单词开头的 n 元
  • 是否可以检索与 Solr 中的查询匹配的字段名称?

    我想动态地向用户显示哪个字段与发送到 Solr 的查询相匹配 例如 如果我有一个文档 document field1 yay field2 nay dynamic field hurr one yay two nay 我查询 yay 我是否
  • solr JOIN 查询

    我需要在 solr 索引上运行 JOIN 查询 我有两个已索引的 xml person xml 和 subject xml Person
  • Solr 自定义相似度

    我想在我的 solr schema xml 中设置我自己的自定义相似度 但我在理解此功能时遇到一些问题 我想完全停用 solr 评分 tf idf coord 和 fieldNorm 我不知道从哪里开始 我知道的事情 我必须编写自己的 De
  • 如何增强solr中的字段

    我已经事先确定了提升 我在 solr 索引中有一个名为boost1 该提升字段的值介于 1 到 10 之间 类似于 google PR 排名 这是应该应用于 solr 中运行的每个查询的提升 这是我的索引中的字段 Id Title Text

随机推荐

  • Firebase Analytics 架构 x86_64 的未定义符号:“_OBJC_CLASS_$_FIRAnalytics”

    通过 cocoapods 将 Firebase 更新到 7 6 0 后 我收到以下链接错误 但仅在针对模拟器时出现 当针对设备时 一切都构建得很好 OBJC CLASS FIRAnalytics referenced from objc c
  • 有些浏览器会对 cookie 进行编码吗?

    这是一种后续行动为什么我的包含 JSON 的 cookie 偶尔会出现格式错误 https stackoverflow com questions 2329395 why are my cookies containing json occ
  • java.text.ParseException:无法解析的日期:“20:01:00.000Z”

    我得到的时间字段值采用 10 30 00 000Z 格式 我想将其转换为 10 30 AM PM 格式 我正在尝试使用 SimpleDateFormat 并解析它 但我收到了 java text ParseException 有人可以帮我解
  • asp.net MVC - 如何制作主页面/详细信息页面

    我希望创建一个主 详细信息页面 我认为它以两种方式之一工作 单击网格中的一行会再次调用同一页面 并添加详细信息面板 单击一行会对控制器操作进行 javascript JSON 调用 该操作返回详细信息并填充面板 我希望突出显示所选行 所选行
  • 可以将输入字符串转换为Python中的可调用函数对象吗? [复制]

    这个问题在这里已经有答案了 我希望能够获取一个描述 Python 函数的字符串 并将其转换为一个我可以调用的函数对象 例如 myString def add5 x return x 5 myFunc myString toFunction
  • 使用 Python 的 Dataflow/Beam 示例

    我正在尝试获取以下项目的样本PCollection在 Dataflow Beam 上使用 Python SDK 虽然没有记录 Sample FixedSizeGlobally n 存在 测试时 它seems返回一个PCollection包含
  • 未找到类 Android 支持设计小部件 NavigationView

    美好的一天 你能帮我一个忙吗 在模拟器上编译 运行代码时出现此错误 这是我以前制作的示例教程 我使用了 min Target API 15 并编译了最新的 gradle com android support design 23 0 0 h
  • 当初始状态和最终状态相同时,不会触发transitionend

    在下面的例子中我正在做background color使用 CSS 进行过渡并尝试处理transitionend两个 div 的事件 很遗憾 transitionend没有被解雇div2因为初始和最终背景颜色相同 var div1 div1
  • ASP.NET WebAPI 默认登陆页面

    我已经使用 ASP NET WebApi v2 创建了一个 RESTful Web 服务 并且正在使用虚张声势 https github com domaindrivendev Swashbuckle为 API 文档生成 swagger U
  • 使用 C# 反射从字典生成动态对象

    我一直在研究 C 中的反射 想知道我是否使用带有键值的字典可以创建一个带有变量的对象 该变量包含字典中每个键的名称及其值 该字典的键值 我有一个相反的方法 它从字典中提取一个对象 该字典包含键和类属性及其值 即属性的值 我想知道如果可能的话
  • Julia 中加载/导入的包列表

    如何获取 Julia 会话导入 使用的包的列表 Pkg status 列出所有已安装的软件包 我对通过以下方式导入 加载的内容感兴趣using or import 看起来whos 包含相关信息 名称以及是否是模块 可以输出whos 被捕获在
  • jQuery every 循环重命名 ID 的每个实例

    我有一个页面正在表中创建动态创建的行 其输入的 ID 为 fixedRate 我正在尝试重命名fixedRate id 的每个实例 这仅适用于我当前代码的 id 的第一个实例 这是代码 var amountRows billTasks gt
  • 析构函数永远不会被调用[重复]

    这个问题在这里已经有答案了 我有课Class这创造了一个Thread在它的构造函数中 该线程运行一个while true 循环正在读取非关键数据NetStream 该线程将被析构函数中止 Class thread Abort thread
  • 进程是否在远程计算机上运行?

    我有三台远程连接的远程电脑 我正在尝试编写一个简单的 Windows 应用程序 该应用程序将在单个窗口中显示特定进程是否在任意一台机器上运行 例如 Server1 Chrome 未运行 Server2 Chrome 正在运行 Server3
  • 为 Android 创建 PDU

    我目前正在编写和应用程序 即发送 接收短信 出于单元测试的目的 我需要以编程方式创建 PDU 解码非常简单 Bundle bundle intent getExtras if bundle null Get all messages con
  • 有人尝试过用Z3本身来证明Z3吗?

    有没有人尝试证明Z3 http research microsoft com en us um redmond projects z3 与Z3本身 是否有可能使用 Z3 来证明 Z3 是正确的 更理论化的是 是否有可能使用 X 本身来证明工
  • 模型不会在 ng-if 内更新

    我在角度应用程序中遇到了奇怪的行为 我不知道这是一个错误还是已知的限制 use strict var ctrl function scope scope foo false div foo foo div style background
  • 使用另一个表中的数据创建 SQL 表

    如何使用另一个表 表的副本 中已存在的数据创建表 复制表的最便携方法是 使用 CREATE TABLE 语句创建新表 基于旧表中的 SELECT 使用 INSERT INSERT INTO new table SELECT FROM old
  • 以类似于 Windows 的 MessageBox() 的方式使用 UIAlertView?

    我是 iPhone 新手 我希望能够以类似于 Windows 的方式使用 UIAlertViewMessageBox or the MessageDlg in Delphi 例如 我有一个方法需要询问用户对某件事的确认 并根据他们的响应继续
  • 仅返回与 Solr 匹配足够 NGram 的结果

    为了使用 Solr 实现某种程度的容错 我开始使用NGramFilterFactory 以下是来自schema xml