【问题标题】:Solr IS IN search possible?Solr IS IN 搜索可能吗?
【发布时间】:2016-10-31 22:43:26
【问题描述】:

我知道在 MySQL 这样的 RDB 中很难(也许不可能)做到这一点。我想知道 Solr 是否可以做到这一点。 这是我的任务:

我有一个 Solr 索引,其中包含一个名为 parts 的字段。它最多包含 5 个随机字符,如下所示:

12
123
22ac
...
2a
2b
ccc2
1122a
xx12
yy

如果parts 字段中的所有元素都在搜索词中,我需要返回的文档。

例如,如果搜索词是21ba,则应返回122a2b1122a,因为它们的所有字母都在搜索词中。 如何在 Solr 中做到这一点?

【问题讨论】:

    标签: solr


    【解决方案1】:

    直接在StrField 中索引部分术语。发出查询时,使用匹配 1 个或多个查询字符的 Solr 正则表达式:如果搜索词是 21ba,则查询将为 parts:/[21ba]+/

    【讨论】:

    • .. 对于我们这些不知道的人,所有的正则表达式都默认锚定在 Solr 中。 :-)(所以 ^ 和 $ 是自动添加的)。
    【解决方案2】:

    好的,虽然不妥,但确实可以实现,可以使用Ngram Analyzer对每个关键词进行拆分。下面是一个例子:

     <analyzer>
      <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="2" />
     </analyzer>
    

    这是here中的详细文档。

    【讨论】:

      猜你喜欢
      • 2015-08-28
      • 1970-01-01
      • 2012-01-05
      • 2012-01-25
      • 2012-07-18
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多