【问题标题】:Indexing and searching words and word-parts索引和搜索单词和单词部分
【发布时间】:2017-08-07 19:55:55
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

如果不自定义架构/solrconfig 以满足您的特定需求,您就不能只运行严肃的生产设置。根据我的猜测,你会得到你想要的结果:

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

【讨论】:

  • “一个使用 EdgeNgram 在开始时匹配部分单词的字段”....你能给我一些关于它的内容吗,对于我的具体情况(俱乐部管理员 - 俱乐部管理员)?
  • 添加了文档的链接。但最好理解它的工作原理是设置一个示例字段,并在 Solr 仪表板的分析页面中查看它的工作原理
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2011-08-12
  • 2011-12-03
相关资源
最近更新 更多