【问题标题】:Solr query with filter query带有过滤器查询的 Solr 查询
【发布时间】:2017-11-22 03:13:24
【问题描述】:

我需要使用 solr 查询来处理建议。建议工作正常。但问题是建议是有条件的,即建议是基于地理位置的。我想要以下等效查询:

q=<SEARCH TERM>&fq=country:"<search country>"

我尝试了一些方法,但它们不起作用。处理这种情况的方法是什么?

编辑 1: 建议配置:

<searchComponent name="suggest" class="solr.SuggestComponent"> 
<lst name="suggester"> 
<str name="name">mySuggester</str> 
<str name="lookupImpl">FuzzyLookupFactory</str> 
<str name="dictionaryImpl">DocumentDictionaryFactory</str> 
<str name="field">autofill</str> 
<str name="contextField">allowed_location</str> 
<str name="suggestAnalyzerFieldType">text_autofill</str> 
<str name="buildOnStartup">false</str> 
<str name="storeDir">path on file system</str> 
</lst> 
</searchComponent>

【问题讨论】:

  • 你检查过国家字段是否在solr中被索引了吗?另外,您需要哪种语言的等效查询?像 java solrj API 调用一样?
  • 是的,国家在 solr 中被索引。我正在使用 solr 管理控制台进行验证。我相信如果我可以使用 solr 控制台触发查询,它可以用任何语言完成。附加信息:我可以使用选择处理程序获得结果。但结果不会是建议。我想使用建议处理程序得到结果
  • 请向我们展示建议处理程序和国家字段架构的代码

标签: solr solr6


【解决方案1】:

您必须在您的 solrconfig.xml 中配置建议器组件,您的建议查询需要采用以下形式(缩短)

suggest.q=<search_term>&suggest.cfq=<search_country>

如果您需要过滤查询来处理国家/地区字段,则必须在您的 solrconfig.xml 中将其配置为 contextField

为了更好的理解,请参考参考指南link

【讨论】:

  • 我会尝试这个解决方案,然后再讨论
  • 我尝试了这个建议并得到了错误。我正在使用 solr 6.6 。它说这个建议者不支持上下文
  • 我的建议器配置是:mySuggesterFuzzyLookupFactory DocumentDictionaryFactory自动填充allowed_locationtext_autofillfalse文件系统路径
  • 建议堆栈跟踪 { "error":{ "msg":"此建议不支持上下文", "trace":"java.lang.IllegalArgumentException: 此建议不支持上下文\ n\tat org.apache.lucene.search.suggest.analyzing.AnalyzingSuggester.build(AnalyzingSuggester.java:404)\n\tat at , "code":500}}
  • allowed_location 的字段定义
猜你喜欢
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 2016-07-17
  • 2011-11-27
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多