我希望能够执行以下类型的查询:
要索引的数据包括(比方说)音乐视频,其中只有标题很有趣.我只是想对它们进行索引,然后为它们创建查询,这样,无论用户在查询中使用什么单词或单词,将首先返回包含这些单词的文档,按顺序,在tile的开头,然后返回(在没有特定的顺序)包含至少一个标题任何位置的搜索词的文档.所有这些都应该不区分大小写.
例:
对于文件:
如果我搜索"海",我想得到
首先是标题中包含"sea"的所有其他文档,但不是在开头.
如果我搜索"狂野的海洋",我想得到
首先是所有其他文件中标题为"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 <"开头的那些更好(获得更高的分数).
Video2Title = Wild sea索引为" title:lucene_start_token Wild sea",依此类推然后进行查询,以便:
+(标题:海)(标题:"lucene_start_token sea")
让Lucene返回标题中包含我的搜索词的所有文档,并对匹配"lucene_start_token +搜索词"的人给出更好的分数
那么我的问题是,确实有更好的方法(可能使用PhraseQuery和Term 职位)吗?如果没有,上述哪一个更好的性能?
这是我正在尝试做的事情的简化场景。我有两本词典:
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) 我有一个这样的列表:
['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的评论对列表进行排序)
我有一只熊猫的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)
有一个简单的方法来完成这项工作吗?
谢谢
我有一个数据框:
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) 我想从小标题中选择以字母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反转它们,因此,一个整洁的解决方案是最好的。
谢谢!
我想创建一个新列,它是以“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)
到目前为止,在我的搜索过程中,我只找到了如何根据条件对特定列求和,但我不想指定列,因为列很多。
有没有办法检查(在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>.
提前致谢.
这是我的mySQL查询:
SELECT *
FROM `eodList`
WHERE datechanged>='$curdate'
GROUP BY symbolName
ORDER BY dateChanged DESC
Run Code Online (Sandbox Code Playgroud)
如何获取symbolName以字母开头的所有行(例如)A-F?
更新:
我需要一些可以轻松更改到另一个范围的东西而不需要很多代码更改.
java中是否有任何实用函数String.startsWith用于字符串数组中的每个元素?
例如:
String[] s = {"ABC", "BBV", "ABCD", "NBHH"};
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
array.startsWith("AB");
Run Code Online (Sandbox Code Playgroud)
回报ABC和ABCD