标签: startswith

Lucens做"启动"查询的最佳方式

我希望能够执行以下类型的查询:

要索引的数据包括(比方说)音乐视频,其中只有标题很有趣.我只是想对它们进行索引,然后为它们创建查询,这样,无论用户在查询中使用什么单词或单词,将首先返回包含这些单词的文档,按顺序,在tile的开头,然后返回(在没有特定的顺序)包含至少一个标题任何位置的搜索词的文档.所有这些都应该不区分大小写.

例:

对于文件:

  • Video1Title =海是蓝色的
  • Video2Title =狂野的大海
  • Video3Title =野海无论如何
  • Video4Title =海边无论如何

如果我搜索"海",我想得到

  • "Video1Title =海是蓝色的"

首先是标题中包含"sea"的所有其他文档,但不是在开头.

如果我搜索"狂野的海洋",我想得到

  • Video2Title =狂野的大海
  • Video3Title =野海无论如何

首先是所有其他文件中标题为"Wild"或"Sea"但没有"Wild Sea"作为标题前缀的文档.

如果我搜索"Seasi",我不想得到任何东西(我不关心关键字标记和前缀查询).

现在AFAIKS,没有实际的方法告诉Lucene"找到word1和word2等位于1和2和3等位置的文件"

有模拟该行为的"变通方法":

  • 将该字段索引两次.在field1你有单词标记(或许使用StandardAnalyzer),并在field2你有他们所有丛生成一个元素(使用KeywordAnalyzer).然后,如果您搜索类似于:

    +(field1:word1 word2 word3)(field2:"word1 word2 word3*")

有效地告诉Lucene"文件必须包含标题中的word1或word2或word3,而且那些匹配"标题以> word1 word2 word3 <"开头的那些更好(获得更高的分数).

  • 在索引它们时将"lucene_start_token"添加到字段的开头,使得 Video2Title = Wild sea索引为" title:lucene_start_token Wild sea",依此类推

然后进行查询,以便:

+(标题:海)(标题:"lucene_start_token sea")

让Lucene返回标题中包含我的搜索词的所有文档,并对匹配"lucene_start_token +搜索词"的人给出更好的分数

那么我的问题是,确实有更好的方法(可能使用PhraseQueryTerm 职位)吗?如果没有,上述哪一个更好的性能?

lucene startswith

3
推荐指数
1
解决办法
4086
查看次数

如何检查字典中的键是否以另一字典中的键开头?

这是我正在尝试做的事情的简化场景。我有两本词典:

dictA = {"apple": 1, "orange": 2, "chocolate": 3, "mango": 4}
dictB = {"man": "abc", "or": "asdf", "app": "fasdfkl"}
Run Code Online (Sandbox Code Playgroud)

如何打印(三个键+值的实际顺序无关紧要):

I can find...
orange2
mango4
apple1

I cannot find...
chocolate3
Run Code Online (Sandbox Code Playgroud)

我试图做这样的事情,但在第二部分卡住了。

print "I can find ..."
for itemA in dictA:
    for itemB in dictB:
        if itemA.startswith(itemB):
            print itemA + str(dictA[itemA])
Run Code Online (Sandbox Code Playgroud)

它会打印

I can find ...
orange2
mango4
apple1
Run Code Online (Sandbox Code Playgroud)

python dictionary key startswith

3
推荐指数
1
解决办法
4009
查看次数

从列表python中的某个东西开始删除后面的字符串

我有一个这样的列表:

['a b d', 'a b e', 'c d j', 'w x y', 'w x z', 'w x k']
Run Code Online (Sandbox Code Playgroud)

我想删除在以与它相同的4个字符开头的字符串之后出现的所有字符串.例如,'a b e'将被删除,因为'a b d'它发生在它之前.

新列表应如下所示:

['a b d', 'c d j', 'w x y']
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

(注意:根据@Martijn Pieters的评论对列表进行排序)

python string list startswith

3
推荐指数
1
解决办法
77
查看次数

如何在Pandas中提取特定行

我有一只熊猫的df:

df['timestamp']
26600          58161.0
26628    58161.0416667
26656    58161.0833333
26684        58161.125
26712    58161.1666667
26740    58161.2083333
26768         58161.25
26796    58161.2916667
26824    58161.3333333
26852        58161.375
26880    58161.4166667
26908    58161.4583333
26936          58162.0
26964    58162.0416645
26992    58162.0833333
Run Code Online (Sandbox Code Playgroud)

我想只提取以".0"结尾的两行

我试过这个命令:

df['timestamp'].str.startswith(".0", na=False)
Run Code Online (Sandbox Code Playgroud)

但它返回:

AttributeError: 'Series' object has no attribute 'startswith'
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法来完成这项工作吗?

谢谢

python object startswith pandas

3
推荐指数
1
解决办法
152
查看次数

使用 lambda 以字符串开头时替换 DataFrame 列中的值

我有一个数据框:

import pandas as pd
import numpy as np
x = {'Value': ['Test', 'XXX123', 'XXX456', 'Test']}
df = pd.DataFrame(x)
Run Code Online (Sandbox Code Playgroud)

我想使用 lambda 用 np.nan 替换以 XXX 开头的值。

我尝试了很多替换、应用和映射的方法,我能做的最好的是 False, True, True, False。

下面的工作,但我想知道一个更好的方法来做到这一点,我认为应用,替换和 lambda 可能是一个更好的方法来做到这一点。

df.Value.loc[df.Value.str.startswith('XXX', na=False)] = np.nan
Run Code Online (Sandbox Code Playgroud)

lambda replace startswith apply pandas

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

在R中使用dplyr选择不以字符串开头的列

我想从小标题中选择以字母R结尾且不以字符串(“ hc”)开头的列。例如,如果我有一个看起来像这样的数据框:

name  hc_1  hc_2  hc_3r  hc_4r  lw_1r  lw_2  lw_3r  lw_4   
Joe   1     2     3      2      1      5     2      2
Barb  5     4     3      3      2      3     3      1
Run Code Online (Sandbox Code Playgroud)

为了做我想做的事,我尝试了很多选择,但是令我惊讶的是这个选择不起作用:

library(tidyverse)
data %>%
  select(ends_with("r"), !starts_with("hc"))
Run Code Online (Sandbox Code Playgroud)

尝试时,出现以下错误:

错误:!starts_with("hc")必须求值为列的位置或名称,而不是逻辑向量

我也尝试过使用negate()并得到相同的错误。

library(tidyverse)
data %>%
  select(ends_with("r"), negate(starts_with("hc")))
Run Code Online (Sandbox Code Playgroud)

错误:negate(starts_with("hc"))必须求值到列的位置或名称,而不是函数

我想将答案保留在dplyr select函数中,因为一旦选择了变量,我将最终使用mutate_at反转它们,因此,一个整洁的解决方案是最好的。

谢谢!

select r startswith negate dplyr

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

R:以以下开头的所有列的总和

我想创建一个新列,它是以“m_”开头的所有列的总和,以及一个新列,它是以“w_”开头的所有列的总和。不幸的是,它不是每个第 n 列,因此索引所有奇数列和偶数列将不起作用。

columnnames <- c("m_16", "w_16", "w_17", "m_17", "w_18", "m_18")
values1 <- c(3, 4, 8, 1, 12, 4)
values2 <- c(8, 0, 12, 1, 3, 2)
df <- as.data.frame(rbind(values1, values2))
names(df) <- columnnames
Run Code Online (Sandbox Code Playgroud)

我想要得到的是:

columnnames <- c("m_16", "w_16", "w_17", "m_17", "w_18", "m_18", "sum_m", "sum_w")
values1 <- c(3, 4, 8, 1, 12, 4, 8, 24)
values2 <- c(8, 0, 12, 1, 3, 2, 11, 15)
df <- as.data.frame(rbind(values1, values2))

names(df) <- columnnames
Run Code Online (Sandbox Code Playgroud)

到目前为止,在我的搜索过程中,我只找到了如何根据条件对特定列求和,但我不想指定列,因为列很多。

r sum startswith

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

Applescript和"开始于"运算符

有没有办法检查(在AppleScript中)列表(或html文本块)是否有starts with任意数量的值.

示例(检查单个值)

if {foobar starts with "<p>"} then
    -- do something awesome here
end if
Run Code Online (Sandbox Code Playgroud)

除了我想传递多个值来检查<p><h1><em>.

提前致谢.

applescript list startswith

2
推荐指数
2
解决办法
6250
查看次数

如何选择一系列起始字符?

这是我的mySQL查询:

SELECT *
FROM `eodList` 
WHERE datechanged>='$curdate' 
GROUP BY symbolName 
ORDER BY dateChanged DESC
Run Code Online (Sandbox Code Playgroud)

如何获取symbolName以字母开头的所有行(例如)A-F


更新:

我需要一些可以轻松更改到另一个范围的东西而不需要很多代码更改.

mysql database select range startswith

2
推荐指数
2
解决办法
3964
查看次数

检查数组中每个元素的start-with

java中是否有任何实用函数String.startsWith用于字符串数组中的每个元素?

例如:

String[] s = {"ABC", "BBV", "ABCD", "NBHH"};
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

array.startsWith("AB");
Run Code Online (Sandbox Code Playgroud)

回报ABCABCD

java arrays string startswith

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

标签 统计

startswith ×10

python ×3

list ×2

pandas ×2

r ×2

select ×2

string ×2

applescript ×1

apply ×1

arrays ×1

database ×1

dictionary ×1

dplyr ×1

java ×1

key ×1

lambda ×1

lucene ×1

mysql ×1

negate ×1

object ×1

range ×1

replace ×1

sum ×1