在solr中搜索特殊字符

2024-01-26

我在 solr 中搜索特殊字符时遇到问题。 我的文档有一个“标题”字段,有时它可能像“泰坦尼克号 - 1999”(它有字符“-”)。 当我尝试使用“-”在 solr 中搜索时,我收到 400 错误。我试图转义这个字符,所以我尝试了“-”和“\-”之类的东西。经过这些更改,solr 不会以错误响应我,但它返回 0 个结果。

我如何在 solr 管理中使用该特殊字符进行搜索(例如“-”或“'”???

Regards

UPDATE在这里你可以看到我当前的solr方案https://gist.github.com/cpalomaresbazuca/6269375 https://gist.github.com/cpalomaresbazuca/6269375

我的搜索是“标题”字段。

schema.xml 摘录:

 ...
 <!-- A general text field that has reasonable, generic
     cross-language defaults: it tokenizes with StandardTokenizer,
     removes stop words from case-insensitive "stopwords.txt"
     (empty by default), and down cases.  At query time only, it
     also applies synonyms. -->
    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
            <!-- in this example, we will only use synonyms at query time
             <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
             -->
            <filter class="solr.LowerCaseFilterFactory"/>

        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.LowerCaseFilterFactory"/>

        </analyzer>
    </fieldType>
...
<field name="Title" type="text_general" indexed="true" stored="true"/>

您正在使用标准text_general标题属性的字段。这可能不是一个好的选择。text_general旨在用于大量文本(或至少句子),而不是用于名称或标题的精确匹配。

这里的问题是text_general使用标准分词器工厂 https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.StandardTokenizerFactory.

 <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
        <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
            <!-- in this example, we will only use synonyms at query time
             <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
             -->
            <filter class="solr.LowerCaseFilterFactory"/>
        
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
            <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            
        </analyzer>
    </fieldType>

StandardTokenizerFactory执行以下操作:

一个很好的通用分词器,可以去除许多无关的东西 字符并将标记类型设置为有意义的值。令牌类型有 仅对后续类型感知的标记过滤器有用 相同的令牌类型。

这意味着“-”字符将被完全忽略并用于标记字符串。

“kong-fu”将被表示为“kong”和“fu”。 “-”消失。

这也解释了为什么select?q=title:\-不会在这里工作。

选择更合适的字段类型:

而不是StandardTokenizerFactory你可以使用solr.WhitespaceTokenizerFactory,仅在空格上分割以实现单词的精确匹配。因此,为标题属性创建自己的字段类型将是一个解决方案。

Solr 还有一个名为的字段类型text_ws。根据您的要求,这可能就足够了。

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

在solr中搜索特殊字符 的相关文章

  • Django Postgres 全文 TrigramSimilarity 多个字段

    我想弄清楚如何使用TrigramSimilarity with unaccent对于多个字段 到目前为止我有 def filter by location self queryset location log info Filtering
  • 使 IPTC 数据可搜索

    我对 IPTC 元数据有疑问 是否可以通过 IPTC 元数据 关键字 搜索不在数据库中的图像并显示它们 我将如何执行此操作 我只需要一个基本的想法 我知道 PHP 有 iptcparse 函数 我已经编写了一个函数来获取画廊文件夹和所有子目
  • 在 numpy 数组中查找满足条件的大量连续值

    我在 numpy 数组中加载了一些音频数据 我希望通过查找静音部分 即一段时间内音频幅度低于特定阈值的部分 来对数据进行分段 一个非常简单的方法是这样的 values join 1 if abs x lt SILENCE THRESHOLD
  • ANDROID:如何从所有窗口顶部的通知或长按搜索按钮启动弹出对话框?

    我已经搜索过 一切都是关于启动活动而不是对话框 我想要做的是在状态栏中显示通知 当用户按下它时 在用户单击通知之前正在查看的内容之上会弹出一个对话框 我不希望对话框显示在主要活动或最近的应用程序列表的顶部 另外 如何通过长按搜索按钮启动对话
  • 在休眠搜索中使用现有分析器AnalyzerDiscriminator

    Entity Indexed AnalyzerDefs AnalyzerDef name en tokenizer TokenizerDef factory StandardTokenizerFactory class filters To
  • 如何将 UIWebView 中的输入的键盘按钮“返回”更改为“搜索”?

    我有一个简单的 HTML 文件 它将显示在 UIWebView 中 p p
  • 为什么我要费心使用全文搜索?

    我是全文搜索新手 我使用了以下查询 Select From Students Where FullName LIKE abc 学生表包含数百万条记录 所有记录都是随机的 如下所示 QZAQHIEK VABCNLRM KFFZJYUU 仅用了
  • solr JOIN 查询

    我需要在 solr 索引上运行 JOIN 查询 我有两个已索引的 xml person xml 和 subject xml Person
  • Elasticsearch 查询时间增加会产生顺序不足的结果

    给定搜索关键字的 ES 搜索结果one two three申请后好像出错了boost每个关键字的功能 请帮助我修改我的 错误 查询 以实现下面我所描述的 预期结果 我在ES1 7 4与卢塞恩4 10 4 提升标准 three 被认为是最重要
  • Solr 阿拉伯语

    我正在使用 Solr 来索引 3 种语言 阿拉伯语 法语和英语 的文档 我使用了这个 fieldType
  • Bing 搜索 API 和 Azure

    我正在尝试以编程方式在 Microsoft Bing 搜索引擎上执行搜索 这是我的理解 有一个 Bing Search API 2 0 很快就会被替换 2012 年 8 月 1 日 新的 API 称为 Windows Azure Marke
  • 查找文本中所有关键字的有效算法

    我有很多字符串 其中包含许多不同拼写的文本 我通过搜索关键字来标记这些字符串 如果找到关键字 我将使用该关键字的关联文本 假设搜索字符串可以包含文本 schw schwa 和 施瓦茨 我有三个关键字 全部解析为文本 schwarz 现在我正
  • 如何在 iBooks 上搜索桌面 UI

    我想像 iBooks 中那样显示 tableview 的搜索栏 我如何减少搜索栏的宽度以及如何在没有任何背景颜色的情况下显示它 另外 当页面显示时 如何最初隐藏搜索框 我可以想到两个选择 通过子类化 UITextfield 创建您自己的 U
  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • Laravel 搜索关系

    我有两个相关的模型 我正在尝试在产品中进行搜索 并且仅显示实际搜索结果 而不是找到该产品的类别的所有产品 我不想搜索任何类别 因为无论搜索什么或找到什么 类别都会始终显示 Example I have the following categ
  • 在 Python 中搜索文本文件并打印相关行?

    如何在文本文件中搜索关键短语或关键字 然后打印关键短语或关键字所在的行 searchfile open file txt r for line in searchfile if searchphrase in line print line
  • Solr 索引在分隔符上分割字段

    我正在尝试使用一些数据设置 Solr 索引 但是我想将我的字段之一作为管道分隔发送并在 Solr 端拆分 例如
  • CakePHP 与 Lucene

    我正在尝试使用 cakephp 实现 Lucene 并遵循本指南http jamienay com 2010 01 zend search lucene datasource for cakephp http jamienay com 20
  • SQL 2008全文索引填充延迟

    我的经理说 在基础表数据更改后 可能需要一段时间才能更新全文搜索索引 例如 如果我有一张桌子Products有一个柱子Description我更新了该描述 然后我可能需要一些时间才能搜索该新描述 真的吗 这需要多长时间 SQL 2008 对
  • 如何过滤 Solr 中多值字段返回的值

    我有一个文档 其中包含一个名为 uuid 的字段 该字段是一个列表 多值 每个文档最多可以有 100k 个值 例如 我想搜索与以 5ff6115e 开头的 uuid 匹配的文档 我已经可以通过使用成功做到这一点q uuids 5ff6115

随机推荐

  • 针对特定包的自定义意图

    假设我的应用程序是 A 我使用应用程序 A 中的自定义意图启动应用程序 B 的活动 它工作得很好 正如我所希望的那样 我使用的代码是在应用程序 B 的清单中
  • 使用 printf 格式化输出:截断或填充

    我想产生以下输出 gt Avril Stewart 99 54 gt Sally Kinghorn 170 60 gt John Young 195 120 gt Yutte Schim 250 40 如您所见 短于 14 个字符的名称会用
  • 接收 zip 文件,angularJs

    当我想从 Rest api 下载 zip 文件时遇到问题 当 zip 文件从我的服务器 带有球衣 传输时 我收到的文件已损坏 我已经尝试过responseType arraybuffer 在我的 http 请求上 但它没有解决任何问题 这是
  • 类似 XPath 的嵌套 Python 字典查询

    有没有办法为嵌套 python 字典定义 XPath 类型查询 像这样的事情 foo spam eggs morefoo bar soap morebar bacon foobar print foo select morefoo more
  • “constexpr if”与“if”的优化 - 为什么需要“constexpr”?

    C 1z 将引入 constexpr if 根据条件删除一个分支的 if 看起来合理且有用 但是 没有 constexpr 关键字就不可能了吗 我认为在编译期间 编译器应该知道编译期间是否已知条件 如果是的话 即使是最基本的优化级别也应该删
  • 更改 jquery 工具提示箭头的位置

    我正在尝试将箭头的位置更改为文本框附近的左侧 我怎样才能解决这个问题 我已经尝试过这个 工作示例链接 http jsfiddle net b8fcg http jsfiddle net b8fcg HTML
  • Java EE 6 发布日期 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions Java
  • 用于操作 S-Record 和 Intel HEX 16 文件的库

    是否有可用的开源库 用 python 或 java 开发 用于操作 Motorola S Record 文件和 Intel HEX 16 文件 例如从一种格式转换为另一种格式 我正在寻找一个 纯 java或python库 而不仅仅是一组ja
  • RecyclerView 回收时出现问题

    我有一个我使用创建的项目列表RecyclerView 当用户单击其中之一时 我会更改所选项目的背景颜色 问题是 当我滚动浏览我的项目并回收它们时 某些项目会获得所选项目的背景颜色 这是错误的 在这里你可以看到我的Adapter s code
  • 用字典解析字符串的算法

    Given 一本充满单词的字典 in july den dentist best 使用一些 C API 来访问它 boolean findWord string word or string getNextWord void 迭代它 一些没
  • 解码 websocket 框架

    我正在尝试解码 websocket 帧 但在解码扩展有效负载时没有成功 到目前为止我所取得的成就是 char in data char buffer unsigned int i unsigned char mask 4 unsigned
  • 就地对 Perl 数组进行排序

    我有一个对数组的引用 称为 intervals 我想对这个数组中的值进行排序 数组中可能有大量值 所以我不想复制这些值 我目前的做法是这样的 sub by position a gt start lt gt b gt start a gt
  • React Hooks:如何在渲染之前等待数据被获取

    我在 useEffect 挂钩中有 fetch 方法 export const CardDetails gt const card getCardDetails useState const id useParams useEffect g
  • ResponseEntityExceptionHandler 针对 401 异常返回空响应正文

    我正在尝试使用 RestTemplate 实现对身份验证服务器的 Rest 调用 并记录响应 以防服务器返回异常 为了做到这一点 我使用 ResponseEntityExceptionHandler 来处理 HttpClientErrorE
  • R 中的掩码电话号码

    我的原始数据有很多个人信息 所以我在R中屏蔽它们 示例数据和我的原始代码如下 install packages stringr library string x c 010 1234 5678 John 010 8888 8888 Phon
  • Node JS:异步执行命令行并获取输出

    我如何运行命令行并尽快获取输出以将其显示在某处 例如 如果在 Linux 系统上运行 ping 命令 它永远不会停止 现在是否可以在命令仍在处理时获得响应 或者让我们采取apt get install命令 如果我想在安装运行时显示安装进度怎
  • If 语句内部和外部的 Return

    这可能是一个相当容易回答的问题 但它已经困扰我一段时间了 如果 if 语句内有一个 return 语句 在一个方法内 在 Java 语言中 但我在末尾添加另一个作为包罗万象并避免错误 则两个返回值都将在其他 if if 语句为真 一个例子
  • 我如何在Python中只向下舍入数字/浮点数?

    我将生成这个随机数 例如 12 75 或 1 999999999 或 2 65 我希望始终将此数字向下舍入为最接近的整数 因此 2 65 将四舍五入为 2 抱歉 我问了很多遍 但没有找到答案 谢谢 您可以选择我们int math trunc
  • org.bson.BSONObject 中的 java 类型

    我目前正在学习mongodb 的 BSON java 库 http github com mongodb mongo java driver 我正在尝试改变org bson BSONObject到 XML 中 以便将其转换为XSLT样式表
  • 在solr中搜索特殊字符

    我在 solr 中搜索特殊字符时遇到问题 我的文档有一个 标题 字段 有时它可能像 泰坦尼克号 1999 它有字符 当我尝试使用 在 solr 中搜索时 我收到 400 错误 我试图转义这个字符 所以我尝试了 和 之类的东西 经过这些更改