首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr插件功能

Solr插件功能
EN

Stack Overflow用户
提问于 2015-03-19 08:19:12
回答 2查看 80关注 0票数 0

目前,我在Solr中遇到了一个多词同义词的问题。所以我想出了一个解决方案:

步骤:

  1. Solr插件拦截搜索关键字。
  2. 插件将从数据库表中获取缩略语、同义词等的列表。
  3. 插件将从刚刚从2提取的同义词列表中逐一比较搜索关键字。
  4. 如果存在,搜索关键字将转换为同义词词。
  5. 根据结果,插件将决定将哪个字段类型/过滤器/标记器放入6个参数。
  6. 插件将返回(关键字,要搜索的字段,使用哪个分析器)来搜索Solr。

问题如下:

  1. 插件能拦截搜索关键字以便在插件中进行处理吗?
  2. 我可以直接从Solr插件中的DB访问和获取记录吗?
  3. 插件能告诉Solr搜索什么,搜索哪个字段,使用什么过滤器/标记器搜索吗?或者插件可以立即在插件中搜索并弹出结果吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-03-19 08:51:49

您可能想看看的多词同义词解决方案。

https://github.com/healthonnet/hon-lucene-synonyms

票数 0
EN

Stack Overflow用户

发布于 2015-04-25 20:35:03

是。下面是一个通过编写您自己的SearchComponent来实现这一点的示例。

在solrconfig.xml中

代码语言:javascript
复制
 <requestHandler name="/myHandler" class="solr.SearchHandler">
     <arr name="first-components">
         <str>myComponent</str>
     </arr>
 </requestHandler>

 <searchComponent name="myComponent" class="com.xyz.MyComponent" />

代码语言:javascript
复制
 public class MyConponent extends SearchComponent {
     ....

     @Override
     public void prepare(ResponseBuilder rb) throws IOException {
         String originalQuery = rb.getQueryString(); //get the original query string

         // access to DB and get records here
         // then construct a new query string and set to rb.

         rb.setQueryString(newQueryString);
     }
 }

使用"/myHandler“而不是"/select”来获得结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29139803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档