Solr插件功能

时间:2015-03-19 08:19:13

标签: search plugins solr

目前我在Solr中面临多字同义词的问题。所以我想出了一个解决方案步骤:

步骤:

  1. Solr插件拦截搜索关键字。
  2. 插件将从数据库表
  3. 获取首字母缩略词,同义词等列表
  4. 插件会从刚才提取的同义词列表中逐一比较搜索关键字
  5. 如果存在,搜索关键字将转换为同义词。
  6. 取决于结果,插件将决定将哪个fieldtype / filter / tokenizer放入6参数。
  7. 插件将返回(关键字,要搜索的字段,要使用的分析器)以供Solr搜索。
  8. 问题:

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

2 个答案:

答案 0 :(得分:0)

你可能想看看诺兰劳森的多字同义词解决方案。

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

答案 1 :(得分:0)

是。这是一个如何通过编写自己的SearchComponent来做到这一点的例子。

在solrconfig.xml

 <requestHandler name="/myHandler" class="solr.SearchHandler">
     <arr name="first-components">
         <str>myComponent</str>
     </arr>
 </requestHandler>

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

 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”来获取结果。