标签: exact-match

SOLR完全匹配提升包含完全匹配的文本

我找不到一个更好的标题,我希望稍后如果可能的话在你的最终消遣中改变它.

我的问题:

我有一个音乐艺术家的数据库.这些看起来像这样:"dr.dre feat.ano","eminem&dr.dre","dr.dre feat.ll cool j","dr.dre","dr.dre feat.eminem&skylar grey" .我们只有两个字段:id和name.

在默认模式solr核心上,我运行此查询:"q = dr.dre",结果还可以,但不完美,如下所示:

  • 博士.dre feat.阿肯
  • 埃米纳姆博士 DRE
  • 博士.dre feat.冷静的
  • 博士.DRE
  • ...

请注意,他们得到了完全相同的分数.

我想要的是将"dr.dre"作为第一个结果,然后是所有其他结果,如下所示:

  • 博士.dre << - 博士.dre是第一位的
  • 埃米纳姆博士 DRE
  • 博士.dre feat.冷静的
  • 博士.dre feat.阿肯
  • ...

我该如何实现这一目标?(过滤器,标记器,复制字段等等并不重要.我无法更改solr中的代码,因为我在其他论坛上看到过建议)

谢谢.

solr exact-match solr-boost

18
推荐指数
1
解决办法
1万
查看次数

使用grep仅提取整个单词

我有一个大文本文件.我需要提取包含确切单词"DUSP1"的所有行.这里有一个例子:

9606    ENSP00000239223 DUSP1   BLAST
9606    ENSP00000239223 DUSP1-001 Ensembl
Run Code Online (Sandbox Code Playgroud)

我想要检索第一行而不是第二行.

我尝试了几个命令:

grep -E "^DUSP1"
grep '\<DUSP1\>'
grep '^DUSP1$'
grep -w DUSP1
Run Code Online (Sandbox Code Playgroud)

但它们似乎都不起作用.我应该使用哪个选项?

regex grep match exact-match

17
推荐指数
2
解决办法
3万
查看次数

如何使Regexs仅匹配完全匹配?

好的,所以基本上我有一些代码匹配正则表达式的URL.然后它将根据URL匹配的正则表达式调用某个函数.我从不想要为URL调用多个函数,我希望正则表达式匹配必须是"精确"

例如,使用简单的URL,/我使用一个简单的正则表达式/,它将匹配,/但它也会匹配像/foo和的东西/foo/bar.

如何在C#/ .Net中阻止这种部分匹配行为?

.net c# regex exact-match

15
推荐指数
1
解决办法
2万
查看次数

弹性搜索完全匹配

我正在使用弹性搜索,而且我有一个时间的魔鬼可以完全匹配.我已经尝试过match,query_string等的各种组合,我得到的结果都不算什么.查询看起来像这样:

{
  "filter": {
    "term": {
      "term": "dog",
      "type": "main"
    }
  },
  "query": {
    "match_phrase": {
      "term": "Dog"
    }
  },
  "sort": [
    "_score"
  ]
}
Run Code Online (Sandbox Code Playgroud)

排序结果

10.102211 {u'term': u'The Dog', u'type': u'main', u'conceptid': 7730506}
10.102211 {u'term': u'That Dog', u'type': u'main', u'conceptid': 4345664}
10.102211 {u'term': u'Dog', u'type': u'main', u'conceptid': 144}
7.147442 {u'term': u'Dog Eat Dog (song)', u'type': u'main', u'conceptid': u'5288184'}
Run Code Online (Sandbox Code Playgroud)

我看,当然,"狗","那条狗"和"狗"都有相同的分数,但我需要弄清楚如何在分数中提升完全匹配"狗".

我也试过了

{
  "sort": [
    "_score"
  ],
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "term": "Dog"
          }
        },
        { …
Run Code Online (Sandbox Code Playgroud)

exact-match elasticsearch

14
推荐指数
1
解决办法
2万
查看次数

SQL Server全文搜索与回退完全匹配

首先,使用全文搜索似乎无法获得完全匹配.当使用全文搜索方法时,这似乎是一个高度讨论的问题,并且有许多不同的解决方案来实现期望的结果,但是大多数看起来非常低效.由于我的数据库量,我被迫使用全文搜索,我最近不得不实施其中一种解决方案以获得更准确的结果.

由于它的工作原理,我无法使用全文搜索的排名结果.例如,如果您搜索了一部名为"电影"的电影,Toy Story并且还有一部电影被调The Story Behind Toy Story出而不是完全匹配,因为它发现了Story两次这样的单词Toy.

我跟踪自己的排名,每当用户访问记录数量上升时,我称之为"人气".我使用此数据点来加权我的结果,以帮助确定用户可能正在寻找的内容.

我还有一个问题,有时需要回到LIKE搜索而不返回完全匹配.即搜索Goonies应返回The Goonies(最受欢迎的结果)

这是我当前存储过程的一个示例,用于实现此目的:

DECLARE @Title varchar(255)
SET @Title = '"Toy Story"'
--need to remove quotes from parameter for LIKE search
DECLARE @Title2 varchar(255)
SET @Title2 = REPLACE(@title, '"', '')

--get top 100 results using full-text search and sort them by popularity
SELECT TOP(100) id, title, popularity As Weight into #TempTable FROM movies WHERE CONTAINS(title, @Title) ORDER BY [Weight] DESC

--check …
Run Code Online (Sandbox Code Playgroud)

full-text-search contains sql-server-2008 exact-match

12
推荐指数
1
解决办法
7508
查看次数

C#在字符串中找到完全匹配

如何在字符串中搜索完全匹配?例如,如果我有一个包含此文本的字符串:

标签
标签:
标签

我搜索标签,我只想得到第一场比赛,而不是其他两场比赛.我尝试了Contains和IndexOf方法,但他们也给了我第二和第三场比赛.

c# string find exact-match

11
推荐指数
1
解决办法
4万
查看次数

JavaScript Regex与完全字符串不匹配

在下面的示例中,输出为true.它cookie和它也匹配cookie14214我猜它是因为cookie在字符串中cookie14214.我如何磨练这场比赛才得到cookie

var patt1=new RegExp(/(biscuit|cookie)/i);
document.write(patt1.test("cookie14214"));
Run Code Online (Sandbox Code Playgroud)

这是最好的解决方案吗?

var patt1=new RegExp(/(^biscuit$|^cookie$)/i);
Run Code Online (Sandbox Code Playgroud)

javascript regex match exact-match

7
推荐指数
1
解决办法
9677
查看次数

Bing:搜索 - 只匹配精确的文字字符串?

我正在使用PHP和Bing API来搜索某些域名.我只希望得到完全匹配的结果.

以某种方式Bing会返回完全不匹配的结果.

当我搜索:

"www.gebouw.nl"

我有时也得到像"www.gprgebouw.nl"这样的结果

有没有办法告诉Bing只搜索确切的匹配?

search bing exact-match

6
推荐指数
1
解决办法
9336
查看次数

Pandas:在一列上近似连接,在其他列上完全匹配

我有两个 Pandas 数据框,我想在多列(比如 3)和大约(即最近的邻居)上的一个(日期)列上加入/合并。我也想返回它们之间的差异(天)。每个数据集大约有 50,000 行长。我对内连接最感兴趣,但“剩菜”也很有趣,如果不是太难掌握的话。大多数“完全匹配”观察结果将在每个数据框中多次出现。

我一直在尝试使用difflib.get_close_matches将它们全部连接为字符串(这很愚蠢,我知道!)但并不总是给出完全匹配。我想我需要先循环精确匹配,然后在该组中找到最近的匹配,但我似乎无法正确...

数据框看起来像:

df1 = pd.DataFrame({'index': ['a1','a2','a3','a4'], 'col1': ['1232','432','432','123'], 'col2': ['asd','dsa12','dsa12','asd2'], 'col3': ['1','2','2','3'], 'date': ['2010-01-23','2016-05-20','2010-06-20','2008-10-21'],}).set_index('index')

df1
Out[430]: 
       col1   col2 col3        date
index                              
a1     1232    asd    1  2010-01-23
a2      432  dsa12    2  2016-05-20
a3      432  dsa12    2  2010-06-20
a4      123   asd2    3  2008-10-21

df2 = pd.DataFrame({'index': ['b1','b2','b3','b4'], 'col1': ['132','432','432','123'], 'col2': ['asd','dsa12','dsa12','sd2'], 'col3': ['1','2','2','3'], 'date': ['2010-01-23','2016-05-23','2010-06-10','2008-10-21'],}).set_index('index')

df2
Out[434]: 
      col1   col2 col3        date
index                             
b1     132    asd    1  2010-01-23
b2     432  dsa12    2  2016-05-23
b3     432 …
Run Code Online (Sandbox Code Playgroud)

python merge nearest-neighbor exact-match pandas

5
推荐指数
1
解决办法
2856
查看次数

Elasticsearch 6.2 中没有规范化的完全匹配、不区分大小写的匹配

我已经查看了我能找到的关于执行完全匹配、不区分大小写查询的每篇文章和帖子,但是在实施时,它们并没有执行我正在寻找的内容。

在将此问题标记为重复之前,请阅读整篇文章。

给定一个用户名,我想查询我的 Elasticsearch 数据库以仅返回与用户名完全匹配的文档,但也不区分大小写。

我曾尝试lowercase为我的username财产指定一个分析器并使用match查询来实现此行为。虽然这解决了不区分大小写匹配的问题,但它在精确匹配时失败了。

我研究过使用lowercase规范化器,但这会使我所有的用户名在索引之前都小写,所以当我聚合用户名时,它们会以小写形式返回,这不是我想要的。我需要保留用户名中每个字母的原始大小写。

我想要的是以下行为:


插入用户

POST {elastic}/users/_doc

{
    "email": "random@email.com",
    "username": "UsErNaMe",
    "password": "1234567"
}
Run Code Online (Sandbox Code Playgroud)

该文档将存储在一个索引中,users完全按照它的方式命名。

通过用户名获取用户

GET {frontend}/user/UsErNaMe
Run Code Online (Sandbox Code Playgroud)

应该回来

{
    "email": "random@email.com",
    "username": "UsErNaMe",
    "password": "1234567"
}
Run Code Online (Sandbox Code Playgroud)

GET {frontend}/user/username
Run Code Online (Sandbox Code Playgroud)

应该回来

{
    "email": "random@email.com",
    "username": "UsErNaMe",
    "password": "1234567"
}
Run Code Online (Sandbox Code Playgroud)

GET {frontend}/user/USERNAME
Run Code Online (Sandbox Code Playgroud)

应该回来

{
    "email": "random@email.com",
    "username": "UsErNaMe",
    "password": "1234567"
}
Run Code Online (Sandbox Code Playgroud)

GET {frontend}/user/UsErNaMe $RaNdoM LeTteRs
Run Code Online (Sandbox Code Playgroud)

应该返回任何东西。

谢谢你。

case-insensitive exact-match elasticsearch

5
推荐指数
1
解决办法
1644
查看次数