【问题标题】:Exact Pharse Match in Solr with single/multi words for text fieldSolr中的精确短语匹配,文本字段的单个/多个单词
【发布时间】:2015-04-09 07:01:40
【问题描述】:

我有一个关于 solr 行为的大问题和疑问,请您帮我解决这个问题。

别介意我的问题太长了。

我的客户有如下要求。

  • 我们需要 matchall 和 matchallpartial 场景。
  • 这取决于我们在应用程序级别执行 matchall 或 matchallpartial 的搜索字段。

我们还有通配符left,right,都是通配符条目。

我使用关键字标记器进行索引以及查询它在所有场景中都满足了我的要求。但是同义词、停用词和词干根本不起作用。因为我使用了关键字标记器,它正在构建像整个短语这样的查询。我试过了StandaradTokenizer 工厂失败了,只有 matchall 场景仍然可以正常工作。

能否请您发布一些示例查询和建议,以获得与单个单词/多个单词的完全匹配。

例如 如果我的领域有 “Indicators Indicator Components”是整个​​短语。即使我正在搜索“indicator”,我也不会得到结果。

如果我使用关键字标记器,我会得到我想要的,但它在同义词、停用词场景中失败了。

有时(取决于逻辑)我会为 matchallpartial 场景使用相同的文本,那时我想要“indicator”的结果如何使用 stadardtokenizer 获得整个短语/单词的精确匹配。

请帮帮我。

谢谢, 斯里

【问题讨论】:

  • 别忘了你可以用不同的分词器多次索引同一个字段;您可以有一个查询部分匹配的标记化版本,以及一个查询完整匹配的更精确版本。
  • Yann 如何为不同的字段使用不同的标记器..
  • 是的,您可以在您的架构中定义各种字段类型;通常对于完全匹配,您将使用 KeywordTokenizerFactory(它实际上并没有标记化),对于部分匹配,您将使用 StandardTokenizerFactory。您可以在两个字段(每种类型一个字段)中索引相同的内容,并根据您想要的匹配类型、查询或其他字段。

标签: java search solr full-text-search


【解决方案1】:

我列出了两个例子,这肯定有助于获得完全匹配

我的第一个查询是:- /select?q=name:anand kishore - 通过这种方式,我将获得 1000 条名称为 anand 或 kishore 或两者兼有的记录

我的第二个查询是:- /select?q=name:"anand kishore" - 通过这个我将获得 60 个记录结果,这些记录将具有 anand kishore 之类的(anand kishore tripathy,kamal anand kishore)

我的第三个查询是:- /select?q=name:"kamal anand kishore" - 这样我只会得到一个完全匹配的结果,即 kamal anand kishore

【讨论】:

  • select?q=(sectionName_text_en_gb:("Indicators Components"^10.0)) 我没有得到任何结果。我现在正在使用 StadardKeyywordTokenizer
  • 为我工作这就是我在字段中使用的 继续....
猜你喜欢
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
  • 2019-08-09
相关资源
最近更新 更多