尝试使用 ElasticSearch 和 python 在包含研究主题的 csv 数据集上为最终用户创建具有全文搜索功能的可搜索仪表板。
搜索将返回相关 csv 行的行索引。有多个列,即_id, topic
如果我尝试查询数据集以获取"cyber security"
. 我得到的大部分结果都包含单词"cyber security"
,或者"cyber-security"
返回了其他涉及食品安全和军队安全的行。对于一般搜索词,如何避免这种情况?
此外,搜索词“ cyber
”或"cyber security"
不会选择包含诸如"cybersecurity"
或之类的某些主题"cybernetics"
我将如何编写一个可以捕获这些的条件?请记住,这也需要以另一种方式工作,即如果我搜索"food security"
网络主题不应该出现。
def test_search():
client = Elasticsearch()
q = Q("multi_match", query='cyber security',
fields=['topic'],
operator='or')
s = Search(using=client, index="csvfile").query(q) \
# .filter('term', name="food")
# .exclude("match", description="beta")
编辑:根据评论中的要求添加示例要求
csv 文件可以如下所示。
_id,topic
1,food security development in dairy
2,securing hungry people by providing food
3,cyber security in army
4,bio informatics for security
5,cyber security in the world
6,food security in the world
7,cyberSecurity in world
8,army security in asia
9,cybernetics in the world
10,cyber security in the food industry.
11,cyber-information
12,cyber security
13,secure secure army man
14,crytography for security
15,random stuff
可接受
搜索词是cyber
-> 3,5,7,9,10,11,12
搜索词是security
-> 除 11,14,15 之外的所有内容
搜索词是cyber security
或cybersecurity
-> 3,5,7,9,10,11,12 (在这种情况下,网络需要具有更高的优先级,用户不会对其他安全类型感兴趣)
搜索词是food security
->1,2
完美案例
搜索词是cyber
or -> cyber security
3,4,5,7,9,10,11,12,14cybersecurity
考虑到密码学和生物信息学几乎与网络安全相关,我是否应该使用文档集群来实现这一点(ML 技术)?