【问题标题】:Not able to read results of SuggestComponent using SolrJ API无法使用 SolrJ API 读取 SuggestComponent 的结果
【发布时间】:2015-02-19 16:03:20
【问题描述】:

我正在使用 SuggestComponent 来获取自动建议关键字。我在 solrconfig.xml 中正确配置了搜索组件和请求处理程序。我也得到了预期的结果。

现在我的问题是我无法使用 SolrJ api 读取 XML 输出。我在 SolrJ API 上花了几个小时,但找不到读取建议关键字的方法。

我的 Java 代码

SolrServer server = //solrserver object creation
ModifiableSolrParams params = new ModifiableSolrParams();
params.set("qt", "/suggest");
params.set("q", q);
QueryResponse rsp = server.query(params);
**//How to read from QueryResponse?**

这是我的 solrconfig.xml 配置

<searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
      <str name="name">mySuggester</str>
      <str name="lookupImpl">AnalyzingInfixLookupFactory</str>      
      <str name="dictionaryImpl">DocumentDictionaryFactory</str>    
      <str name="field">name</str>
      <str name="weightField">reviewsNum</str>
      <str name="suggestAnalyzerFieldType">text_general</str>
      <str name="buildOnCommit">true</str>
    </lst>
  </searchComponent>

  <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
      <str name="spellcheck">true</str>
      <str name="suggest">true</str>
      <str name="spellcheck.onlyMorePopular">true</str>
        <str name="suggest.count">10</str>
      <str name="suggest.dictionary">mySuggester</str>
    </lst>
    <arr name="components">
      <str>suggest</str>
    </arr>
  </requestHandler>

回复:

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">24</int>
</lst>
<lst name="suggest">
<lst name="mySuggester">
<lst name="a">
<int name="numFound">10</int>
<arr name="suggestions">
<lst>
<str name="term">JNTU <b>A</b>nantapur</str>
<long name="weight">2</long>
<str name="payload"/>
</lst>
<lst>
<str name="term"><b>A</b>merican School of Bombay</str>
<long name="weight">1</long>
<str name="payload"/>
</lst>
<lst>
<str name="term">
Society For <b>A</b>dvanced Study In Rehabilitation
</str>
<long name="weight">1</long>
<str name="payload"/>
</lst>
<lst>
<str name="term"><b>a</b>mrita vishwa vidyapeetham</str>
<long name="weight">1</long>
<str name="payload"/>
</lst>
<lst>
<str name="term">
shanmugha <b>a</b>rts science technology & research <b>a</b>cademy (sastra)
</str>
<long name="weight">1</long>
<str name="payload"/>
</lst>
<lst>
<str name="term">Montesorri Hs <b>A</b>lampur</str>
<long name="weight">1</long>
<str name="payload"/>
</lst>
<lst>
<str name="term"><b>A</b>ditya Ps Nehru Road Proddutur</str>
<long name="weight">1</long>
<str name="payload"/>
</lst>
<lst>
<str name="term">Zphs <b>A</b>rakatavemula Rajupalem</str>
<long name="weight">1</long>
<str name="payload"/>
</lst>
<lst>
<str name="term">Sri <b>A</b>ditya Ps,pamur Pamuru</str>
<long name="weight">1</long>
<str name="payload"/>
</lst>
<lst>
<str name="term">
ramakrishna mission vivekananda educational <b>a</b>nd research institute
</str>
<long name="weight">0</long>
<str name="payload"/>
</lst>
</arr>
</lst>
</lst>
</lst>
</response>

【问题讨论】:

  • 对于临时修复,我正在阅读这样的内容。 List 关键字 = new ArrayList();NamedList 数据 = rsp.getResponse(); LinkedHashMap spellInfo = (LinkedHashMap)data.getVal(1); SimpleOrderedMap sugg = (SimpleOrderedMap)spellInfo.get("mySuggester"); SimpleOrderedMap 建议 = (SimpleOrderedMap)sugg.get(q); ArrayList list = (ArrayList)suggestions.get("suggestions"); for(int i=0;i

标签: solr autocomplete solrj autosuggest solr5


【解决方案1】:

您必须访问响应的 SpellCheckResponse 属性:

rsp.getSpellCheckResponse()

这将返回一个 SpellCheckResponse 对象,其中包含 getSuggestions() 方法,该方法又返回一个 SpellCheckResponse.Suggestion 对象列表。

List<SpellCheckResponse.Suggestion> suggestions = rsp.getSpellCheckResponse().getSuggestions()

您还想使用setRequestHandler("/suggest"),而不是qt 参数。

【讨论】:

  • rsp.getSpellCheckResponse() 给出空值。但 rsp.getResponse() 正在提供数据。
  • MatsLindh,这里我没有使用 SpellCheckComponent 类,而是使用 SuggestComponent 类。那么 response.getSpellCheckResponse() 方法仍然会给出结果吗?
猜你喜欢
  • 1970-01-01
  • 2022-01-07
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 2012-04-26
  • 1970-01-01
相关资源
最近更新 更多