ApacheSolr列表值的模糊搜索

3j86kqsm  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(404)

赏金6天后到期。此问题的答案有资格获得+50声誉奖励。user752590正在寻找来自可靠来源的答案

环境-solr-8.9.0
为了在ApacheSolr中对csv文件的列“name”(模糊搜索'alaistiar~')实现模糊搜索,我发出以下查询

http://localhost:8983/solr/bigboxstore/select?indent=on&q=name:'alaistiar~'&wt=json

在ApacheSolr中对csv文件的列“name”(模糊搜索'shanka~')实现模糊搜索

http://localhost:8983/solr/bigboxstore/select?indent=on&q=name:'shanka~'&wt=json

我可以将上述两个查询合并为一个查询并查找文档吗?
我的第一个http请求是对名称colums上的值alaistiar~进行模糊搜索,并给出一些分数值,第二个http请求是shanka~。当我将两者与'or'运算符结合使用时,它们的行为将与单独请求的行为相同。实际上,我的目的是不希望对多个名称调用多个http请求,同时我希望在输出中使用模糊搜索名称,指示此文档是针对名称alaistiar~的,而此文档是针对名称shanka的~
我加载了一个csv文件,它有4列(大小为5gb),有1亿条记录。csv文件具有以下列名-

'name', 'father_name', 'date_of_passing','admission_number'

我已经在“名称”列上创建了索引。为此,我在托管模式(solr-8.9.0、jdk-11.0.12)上执行了以下curl请求

curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field":{"name":"name","type":"text_general","stored":true,"indexed":true }}' http://localhost:8983/solr/bigboxstore/schema
 curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field":{"name":"father_name","type":"text_general","stored":true,"indexed":false }}' http://localhost:8983/solr/bigboxstore/schema
curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field":{"name":"date_of_passing","type":"pdate","stored":true,"indexed":false }}' http://localhost:8983/solr/bigboxstore/schema
curl -X POST -H 'Content-type:application/json' --data-binary '{"add-field":{"name":"admission_number","type":"text_general","stored":true,"indexed":false }}' http://localhost:8983/solr/bigboxstore/schema

如上所述,这是在1列(仅在名称上)上创建索引的正确方法吗?
现在我有一百万个名字的名单。对于每个名称,我必须对已经加载的数据进行模糊搜索(列:name)。在输出中,对于每个名称,我必须返回java对象列表,包括.csv文件的所有4列。
注意-在输出中,我还必须包括作为输入提供的名称(在where子句中)。对于每个名称,我都进行模糊搜索,如下所示:

http://localhost:8983/solr/bigboxstore/select?indent=on&q=name:'alaistiar~'&wt=json.

要做到这一点,我必须执行一百万个http请求,这是我不想要的。我可以在单个http请求中执行1milion http请求,而不是执行1milion http请求吗?
我理解“or”运算符无法解决我的问题,因为我无法根据作为输入传递的名称对输出文档进行分组。

kr98yfug

kr98yfug1#

是的,您可以使用“或”来统一查询:
姓名:alaistiar~或姓名:shanka~
http://localhost:8983/solr/bigboxstore/select?indent=on&q=name:alaistiar~or name:shanka~&wt=json
如果默认运算符为“或”,则可以省略“或”。查询如下所示:
姓名:alaistiar~姓名:shanka~
http://localhost:8983/solr/bigboxstore/select?indent=on&q=name:alaistiar~name:shanka~&wt=json
当然,“空格”应该在url中转义

相关问题