索引和搜索单词和单词部分

时间:2017-03-16 14:53:03

标签: solr lucene full-text-search fuzzy-search

我刚刚从我们的产品数据库索引了一堆文本数据。我的目标是评估Apache Solr的生产用途。

这是一个文档示例:

{
   "shape":"Geometric",
   "color":"MATTE BLACK",
   "gender":"unisex",
   "model":"CLUBMASTER RX 5154",
   "sales":10,
   "lens":"rugged",
   "material":"plastic",
   "brand":"Ray-Ban"
}

我们的搜索应用中最重要的是模糊匹配,因为不准确的搜索字词非常频繁。

所以,我对Solr发现的结果有点失望。

例如:

clubmaster -> many results
club master -> no results

为什么?!

ray ban -> many results
rayban -> no results

在我任期之后,我也尝试过~1甚至~2,没有运气!

所有字段都已编入索引'* _txt_en'预定义字段。

1 个答案:

答案 0 :(得分:1)

您无法在不自定义架构/ solrconfig的情况下运行严格的生产设置以满足您的特定需求。根据我的猜测,你会得到你想要的结果:

  1. 将您的文本字段复制到具有不同分析的不同版本中,例如:
    • 一个字符串类型,难以匹配
    • 使用EdgeNgram匹配前缀的一个字段。
    • 另一个使用WordDelimiterFilterFactory来匹配ray-ban / rayban
    • ...
  2. 使用edismax作为查询解析器
  3. 在edismax中,有许多内容需要调整。但最重要的是:搜索上面的所有字段,但重量则以不同的方式,分析越少,权重越大