Environment- solr-8.9.0
.csv格式的电影数据已经在apache solr中建立了索引。
电影
数据name,directed_by,genre,type,id,initial_release_date
.45,Gary Lennon,Black comedy|Thriller|Psychological thriller|Indie film|Action Film|Crime Thriller|Crime Fiction|Drama,,/en/45_2006,2006-11-30
9,Shane Acker,Computer Animation|Animation|Apocalyptic and post-apocalyptic fiction|Science Fiction|Short Film|Thriller|Fantasy,,/en/9_2005,2005-04-21
Bomb the System,Adam Bhala Lough,Crime Fiction|Indie film|Coming of age|Drama,,/en/bomb_the_system,
movie_name,Adam Bhala,Animation|Indie film|Coming of age|Drama,,/en/bomb_the_system,
DisMax查询解析器已经在'directed_by'字段上运行。'directed_by'字段映射为'text_general'字段类型。
我在solr
上运行了以下查询curl -G http://localhost:8983/solr/testCore1/select --data-urlencode "q=directed_by:'Adam Bhala Lough~'" --data-urlencode "defType=dismax" --data-urlencode "mm=2"
但是上面的查询在响应中给出0 'numFound'。我希望以下字段匹配:
Adam Bhala
Adam Bhala Lough
我希望以下字段不匹配:
Adam Gary Lennon
虽然数据在solr中被索引。我通过在没有disMax查询解析器的情况下运行以下查询来交叉检查这一点,并且它正在给出响应。
curl -G http://localhost:8983/solr/testCore1/select --data-urlencode "q=directed_by:'Adam Bhala Lough~'"
为什么dismax查询解析器没有正常运行?我理解mm(最小应该匹配)参数===>定义必须匹配的子句的最小数目。
我花了几个小时来解决这个问题。然而,我似乎找不到任何能牵我手的东西。有人能帮我找到丢失的那块吗?参考https://solr.apache.org/guide/8_9/the-dismax-query-parser.html
如何在solr中使用disMax查询分析器
您需要使用qf
(查询字段)参数来指定应该在哪些字段中执行搜索,以及(可选)用于增加或减少特定字段在查询中的重要性的增强因子(默认为1):
q=Adam Bhala Lough~
qf=directed_by
或者,使用edismax
查询解析器而不是dismax
,以便您使用的标准查询语法(directed_by:'Adam Bhala Lough~'
)可以按预期工作。