我正在尝试使用linq-to-sql在应用程序中实现一个非常基本的关键字搜索.我的搜索词是一个字符串数组,每个数组项都是一个单词,我想找到包含搜索词的行.我不介意它们是否包含的不仅仅是搜索条件(最有可能的是它们),但所有搜索条件都必须存在.
理想情况下,我想要类似下面的代码片段,但我知道这不起作用.此外,我在这里看过这个问题,但是这个问题的作者似乎满足于反过来做事(query.Contains(part.partName)),这对我不起作用.
public IQueryable<Part> SearchForParts(string[] query)
{
return from part in db.Parts
where part.partName.Contains(query)
select part;
}
Run Code Online (Sandbox Code Playgroud)
如何重写此查询以便它能够满足我的需求?
我有一个_keywords字符串数组的字段.我想获取哪些文件_keywords是查询数组的超集.
例如:
db.article.insert({'_keywords': ['foo', 'foo1', 'foo2']})
Run Code Online (Sandbox Code Playgroud)
当我查询['foo','foo1','foo2']的子集时,我想要检索此记录,例如:['foo'],['foo1','foo2']
编辑:类似于:
db.article.find({'_keywords': {$contains: array}})
Run Code Online (Sandbox Code Playgroud) 我需要使用python有效地匹配一个非常大的关键字列表(> 1000000).我发现一些非常好的库试图快速完成这个:
1)FlashText(https://github.com/vi3k6i5/flashtext)
2)Aho-Corasick算法等
但是我有一个特殊的要求:在我的上下文中,如果我的字符串是'XXXX是YYYY的非常好的指示',则关键字'XXXX YYYY'应该返回匹配.请注意,'XXXX YYYY'不是作为子字符串出现的,但字符串中存在XXXX和YYYY,这对我来说足够好了.
我知道如何天真地做到这一点.我正在寻找的是效率,为此更好的图书馆?
python string pattern-matching string-matching keyword-search
我想检查一个关键字字符串是否包含在一个文本字符串中。这一定是一个模糊的包含。
我的第一次尝试是使用库blurwuzzy。当使用部分比率时字符串差异很大时,这似乎具有产生高匹配值的意外行为。
我试过使用 levenshtein 的距离,它可以将一个字符串与另一个字符串进行比较,但不能用于查找字符串是否包含关键字。
我尝试过的一个想法是将文本拆分为单个单词,然后遍历它们,计算距离以查看是否匹配。问题是关键字中可能有空格,这意味着它不会使用此方法找到任何匹配项。
我现在已经尝试使用 Bitap 算法来查找关键字是否在文本中,但是当关键字和文本非常不同时,这又是正确的。该算法可以在这里找到。
final String keyword = "br0wn foxes very nice and hfhjdfgdfgdfgfvffdbdffgjfjfhjgjfdghfghghfg".toLowerCase();
final String text = "The Quick Brown Fox Jumps Over the Lazy Dog".toLowerCase();
final Bitap bitap = new Bitap(keyword, alphabet);
bitap.within(text, 20); // Returns true
Run Code Online (Sandbox Code Playgroud)
我已经研究过使用 Lucene。这样做的问题是,很多都是基于从所有数据创建索引然后执行搜索。在我的情况下,这是无法完成的,因为它需要是一种分别采用关键字和文本的方法。如果有任何资源可以在不使用 Lucene 索引的情况下执行模糊包含,这将非常有用。
最好的方法是什么?
我正在执行 nlp 任务。我为topia.termextract 编写了以下代码。执行时显示错误。如果您建议解决错误,这将很有帮助。
from topia.termextract import extract
from topia.termextract import tag
# Setup Term Extractor
extractor = extract.TermExtractor()
# Some sample text
text ='''
Police shut Palestinian theatre in Jerusalem.
Israeli police have shut down a Palestinian theatre in East Jerusalem.
The action, on Thursday, prevented the closing event of an international
literature festival from taking place."""
# Extract Keywords
keywords_topica = extractor(text)
print(keywords_topica)
Run Code Online (Sandbox Code Playgroud)
我在 google colab 中使用 Python 3。
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-23-9a094f024dfe> in …Run Code Online (Sandbox Code Playgroud) 重新编写:
我有一份计算机科学相关文件.我想提取特定于域的关键字.例如JAVA,C#,HTML,OOP,UML,Unity等.我一直在寻找类似牛津计算机词典的来源,但是他们的API还没有启动和运行.我也尝试过Webopedia用于计算机科学术语,但是那个并不是包容性的和更新的(例如它不包括我的文档中的某些单词,如F#),或者在维基百科的情况下,所有术语都没有列在一起.是否有更具包容性的来源或适当的方法来提取这些关键字?我正在使用Python和NLTK.例如,tf-idf没有帮助,因为一些特定于域的单词几乎在所有文档中都很常见,因此这些单词不会得到很高的评价.我认为如果我可以使用POS标签会有所帮助,但我不确定哪种选择最适合我的应用程序.以下面的字符串为例:
"JavaScript,JSON和AJAX中的专家级功能,以及对JQuery等JavaScript框架的深入了解"在这里,我想提取这些词:['JavaScript','JSON','AJAX','Frameworks','JQuery ']但是当我使用NLTK的POS标记搜索名词时,我也得到'水平','能力','知识'...... 谢谢你的帮助.
AKA正确的版本:
if ['hi', 'hello', 'greetings'] in userMessage:
print('Hello!')
Run Code Online (Sandbox Code Playgroud)
我尝试了上面显示的内容,但它说不能使用列表,它必须使用单个字符串.如果我将数组设置为对象/变量也是一样的.如果我使用"或"它似乎完全不起作用.
用例
当用户访问我的网站时,他们会遇到一个类似于 SO 的搜索框。他们可以使用计划文本搜索结果。“.net 问题”、“封闭式问题”、“.net 和 java”等。搜索的功能与 SO 略有不同,因为它将尽可能多地尝试数据库的架构,而不是直接全文搜索。所以“.net 问题”只会搜索 .net 问题而不是 .net 答案(可能不适用于 SO 案例,这里只是一个例子),“封闭问题”将返回封闭的问题,“.net 和 java”问题将返回与 .net 和 java 相关的问题,仅此而已。
问题
我对这些词不太熟悉,但我基本上想为 SQL 驱动的搜索做一个关键字。我知道数据库的架构,我也可以对数据库进行数据挖掘。我想知道在我尝试实施之前已经存在的任何当前方法。我想这个问题是针对所述问题的良好设计。
建议的
到目前为止,我提出的解决方案看起来像这样
想法/建议/链接?
python ×3
arrays ×1
c# ×1
contains ×1
database ×1
fuzzywuzzy ×1
glossary ×1
input ×1
java ×1
keyword ×1
linq-to-sql ×1
lucene ×1
mongodb ×1
nlp ×1
nltk ×1
pos-tagger ×1
python-3.x ×1
search ×1
sql-server ×1
string ×1
subset ×1