【发布时间】: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