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

Indexing and searching words and word-parts

我刚刚从我们的产品数据库中索引了一堆文本数据。我的目标是评估 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”预定义字段。

您不能只 运行 一个严肃的生产设置而不自定义 schema/solrconfig 以满足您的特定需求。据我猜测,您将通过以下方式获得所需的结果:

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