标签: keyword-search

在LINQ to SQL中使用contains()

我正在尝试使用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)

如何重写此查询以便它能够满足我的需求?

c# contains linq-to-sql keyword-search

38
推荐指数
2
解决办法
8万
查看次数

mongodb查询数组的子集

我有一个_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)

arrays subset mongodb keyword-search

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

当关键词是多词时,有效地搜索关键词

我需要使用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

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

执行模糊包含检查

我想检查一个关键字字符串是否包含在一个文本字符串中。这一定是一个模糊的包含。

我的第一次尝试是使用库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 索引的情况下执行模糊包含,这将非常有用。

最好的方法是什么?

java lucene keyword-search levenshtein-distance fuzzywuzzy

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

错误:Python3 toopia.termextract 中不可能出现类建议

我正在执行 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)

python nlp keyword-search python-3.x google-colaboratory

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

从文本文档中提取技术关键字

重新编写:

我有一份计算机科学相关文件.我想提取特定于域的关键字.例如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标记搜索名词时,我也得到'水平','能力','知识'...... 谢谢你的帮助.

glossary nltk pos-tagger keyword-search

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

检查Python输入是否包含关键字列表

AKA正确的版本:

if ['hi', 'hello', 'greetings'] in userMessage:
    print('Hello!')
Run Code Online (Sandbox Code Playgroud)

我尝试了上面显示的内容,但它说不能使用列表,它必须使用单个字符串.如果我将数组设置为对象/变量也是一样的.如果我使用"或"它似乎完全不起作用.

python input keyword-search

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

SQL 搜索的关键字

用例

当用户访问我的网站时,他们会遇到一个类似于 SO 的搜索框。他们可以使用计划文本搜索结果。“.net 问题”、“封闭式问题”、“.net 和 java”等。搜索的功能与 SO 略有不同,因为它将尽可能多地尝试数据库的架构,而不是直接全文搜索。所以“.net 问题”只会搜索 .net 问题而不是 .net 答案(可能不适用于 SO 案例,这里只是一个例子),“封闭问题”将返回封闭的问题,“.net 和 java”问题将返回与 .net 和 java 相关的问题,仅此而已。

问题

我对这些词不太熟悉,但我基本上想为 SQL 驱动的搜索做一个关键字。我知道数据库的架构,我也可以对数据库进行数据挖掘。我想知道在我尝试实施之前已经存在的任何当前方法。我想这个问题是针对所述问题的良好设计。

建议的

到目前为止,我提出的解决方案看起来像这样

  1. 清洁输入。只需删除任何特殊字符
  2. 将输入解析为数据块。将“c# java”的输入分解成c#和java 还把“'c#java'问题”这样的特殊情况处理成“c#java”和“问题”。
  3. 从输入中构建一棵树
  4. 将数据绑定到元数据中。因此,转换诸如封闭式问题之类的内容并将其与表格的 isclosed 列相关联。
  5. 将树转换为 sql 查询。

想法/建议/链接?

database sql-server search keyword keyword-search

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