SOLR 中的子字符串匹配

     2023-02-22     121

关键词:

【中文标题】SOLR 中的子字符串匹配【英文标题】:Substring matches within SOLR 【发布时间】:2011-03-06 12:40:53 【问题描述】:

我似乎无法弄清楚如何使用 SOLR 查找子字符串匹配项,我已经根据前缀找出匹配项,因此我可以让 ham 匹配汉堡包。

如何搜索“burger”以匹配汉堡包?我试过 burger 但这抛出了一个错误 '*' 或 '?'不允许作为 WildcardQuery 中的第一个字符。

如何使用 SOLR 匹配子字符串?

【问题讨论】:

你能把代码贴到前缀匹配的地方吗? 【参考方案1】:

您可以启用此功能,但它会占用大量资源(例如搜索 SuffixQuery)。

见:http://lucene.472066.n3.nabble.com/Leading-Wildcard-Search-td522362.html

引用邮件列表: 解决办法?想象一下创建第二个索引(或添加另一个字段),所有术语都向后拼写。

=>

见添加 ReverseStringFilter https://issues.apache.org/jira/browse/LUCENE-1398

并支持高效的前导通配符搜索:https://issues.apache.org/jira/browse/SOLR-1321

目前 issues.apache.org 似乎已关闭。尝试使用例如谷歌缓存。

【讨论】:

【参考方案2】:

如之前link 中所述,您可以将前导通配符与 edismax (ExtendedDismaxQParser) 一起使用。试试看它是否足够快。

有关上述反向字符串的更多信息也可以在这里找到:solr.ReversedWildcardFilterFactory

【讨论】:

【参考方案3】:

如果有人在搜索“apachesolr 子字符串”后到达这里,有一个更简单的解决方案:https://drupal.stackexchange.com/a/27956/10419(来自https://drupal.stackexchange.com/questions/26024/how-can-i-make-search-with-a-substring-of-a-word)

将 ngramfilter 添加到 solr 配置中 schema.xml 中的文本类型定义 目录。

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" />

【讨论】:

这已经困扰我好几个星期了。感谢您发布,它解决了我尝试基于子字符串进行过滤/搜索的问题。 这不适用于非常大的数据集。 Edge gram 字段在索引数据时需要大量内存。

红移数据库中的子字符串匹配

】红移数据库中的子字符串匹配【英文标题】:substringmatchinredshiftdatabase【发布时间】:2015-11-0407:36:27【问题描述】:我有一个红移表“人”,其中特定列包含类似这样的数据["attributeName":"name","attributeMetadata":null,"attributeValue":"Kit... 查看详情

根据匹配 where 条件中的子字符串来选择值

】根据匹配where条件中的子字符串来选择值【英文标题】:Selectingavaluebasedonmatchingthesubstringinwherecondition【发布时间】:2014-02-1304:29:49【问题描述】:我有一个名为country的表,其列如下所示countrynamestatenameUSATEXASINDIADELHI,MAHARASHTRAENG... 查看详情

错误太多参数试图匹配字符串bash中的子字符串[重复]

】错误太多参数试图匹配字符串bash中的子字符串[重复]【英文标题】:Errortoomanyargumentstryingtomatchsubstringinstringbash[duplicate]【发布时间】:2021-12-1409:56:06【问题描述】:我有以下代码,我试图匹配给定字符串中的单词“test”:str="... 查看详情

mysql中的子字符串正则表达式匹配

】mysql中的子字符串正则表达式匹配【英文标题】:Substringregexmatchinginmysql【发布时间】:2021-03-0214:04:42【问题描述】:我有一个复杂的问题困扰了我几个小时,并寻求mysql专家的帮助。:)提前谢谢你。表:t1;列:名称给定表格... 查看详情

JavaScript 字符串替换中的子匹配组引用是不是有分隔符/消歧语法?

】JavaScript字符串替换中的子匹配组引用是不是有分隔符/消歧语法?【英文标题】:Isthereadelimiter/disambiguationsyntaxforsubmatchgroupreferencesinJavaScriptstringreplacement?JavaScript字符串替换中的子匹配组引用是否有分隔符/消歧语法?【发布时... 查看详情

将大字符串中的子字符串匹配到大量关键字的最佳方法是啥

】将大字符串中的子字符串匹配到大量关键字的最佳方法是啥【英文标题】:Whatisthebestwaytomatchsubstringfromabigstringtoahugelistofkeywords将大字符串中的子字符串匹配到大量关键字的最佳方法是什么【发布时间】:2013-12-1106:14:06【问题... 查看详情

Python Dataframe:DF列中的字符串包含来自不同DF的子字符串和匹配时返回的子字符串值

】PythonDataframe:DF列中的字符串包含来自不同DF的子字符串和匹配时返回的子字符串值【英文标题】:PythonDataframe:StringinDFColumnContainsSubstringfromDifferentDFandSubstringValuesReturnedWhenMatch【发布时间】:2021-11-1501:40:49【问题描述】:同事... 查看详情

如何将大字符串中的子字符串与正则表达式匹配? [复制]

】如何将大字符串中的子字符串与正则表达式匹配?[复制]【英文标题】:Howcanimatchasubstringinabigstringwitharegex?[duplicate]【发布时间】:2014-07-2222:51:48【问题描述】:我有一个带有端口的IPv6地址[2401:2401:2401:2401:2401:2401:2401:2401]:1234。... 查看详情

使用 Postgres SIMILAR TO 和 Spring Data 来匹配列中的子字符串

】使用PostgresSIMILARTO和SpringData来匹配列中的子字符串【英文标题】:UsingPostgresSIMILARTOwithSpringDatatomatchsubstringincolumn【发布时间】:2021-07-0700:20:05【问题描述】:我在列中有一条记录,其值为“非常漂亮的BMW4轮驱动i5”。如果我提... 查看详情

查找和替换文件中与另一个文件中的字符串匹配的子字符串

】查找和替换文件中与另一个文件中的字符串匹配的子字符串【英文标题】:findandreplacesubstringsinafilewhichmatchstringsinanotherfile【发布时间】:2020-03-2512:03:21【问题描述】:我有两个txt文件:File1是一个有9列的tsv。以下是它的第一... 查看详情

如何更改在与 Vuejs 中的 search_key 匹配的字符串中找到的子字符串的文本颜色?

】如何更改在与Vuejs中的search_key匹配的字符串中找到的子字符串的文本颜色?【英文标题】:Howtochangetext-colorofasubstringfoundinastringwhichmatchesthesearch_keyinVuejs?【发布时间】:2020-06-3021:21:27【问题描述】:我有一个搜索栏,我有一些... 查看详情

Solr 部分和完整字符串匹配

】Solr部分和完整字符串匹配【英文标题】:SolrPartialAndFullStringMatch【发布时间】:2011-06-1700:47:53【问题描述】:我正在尝试允许在Solr中搜索部分字符串,因此如果有人搜索“ppopota”,他们会得到与搜索“河马”相同的结果。我... 查看详情

pyhon正则表达式

...配一个换行符。序列‘‘匹配""而"("则匹配"("。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配‘‘或‘‘之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配‘‘或... 查看详情

正则表达式手册(代码片段)

...符。串行“\”匹配“”而“(”则匹配“(”。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“”或“”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“”或... 查看详情

正则表达式语法表(代码片段)

...符。串行“\”匹配“”而“(”则匹配“(”。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“”或“”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“”或... 查看详情

如何匹配 MongoDB 中的子文档数组?

】如何匹配MongoDB中的子文档数组?【英文标题】:HowdoImatchanarrayofsub-documentsinMongoDB?【发布时间】:2019-09-0306:31:10【问题描述】:如果子文档数组中的值大于某个值,则匹配文档,前提是同一文档包含等于某个值的字段我有一个... 查看详情

正则表达式匹配规则(符号使用方法,实例)(代码片段)

...八进制转义符。表示换行符、d匹配[0-9]的数字^匹配输入字符串的开始位置。^abc表示匹配有abc开头的字符串$匹配输入字符串的结束位置。^d$表示匹配一个[0-9]的数字*匹配前面的子表达式零次或多次。zo*能匹配z或者zoo。*等价于0,... 查看详情

字符串中的子字符串计算

】字符串中的子字符串计算【英文标题】:substringcalculationinastring【发布时间】:2012-07-2604:19:50【问题描述】:对于以下问题,我很难找到比O(n^2)更好的方法。我得到一个字符串,例如xyxxz。现在我需要在给定字符串的每个前缀... 查看详情