首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr Tokenizer问题

Solr Tokenizer问题
EN

Stack Overflow用户
提问于 2011-09-16 04:04:14
回答 1查看 1.7K关注 0票数 2

我有一个我认为是简单的solr练习,但我不确定要使用什么。

我有一堆名字,例如Joe Smith、Jack Daniels和Steve。每个名称都可以是一个或两个名称。我希望能够搜索此s.t.如果你搜索"Danie“,你会得到名字或姓氏都以"Danie”开头的所有东西。三个返回示例是"Danielle“、"Steven Daniels”和"Danier Daniellson“。

我也喜欢它,以便优先考虑名字。

那么有两个问题是,我是否需要使用copyField并将名字分解为名字和姓氏?我的分析器会是什么样子呢?

编辑:对搜索能力进行两次编辑。1.类似"Joe S“的内容应该返回所有看起来像"Joe S*”的用户。2.如果用户使用"&“字符进行搜索,则应该将其包括在搜索中,而不是用作运算符。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-16 16:22:14

为了解决第一部分的问题,我建议使用以下解决方案:

为字段编制两次索引:

一次使用solr.KeywordTokenizerFactory

  • -它将按原样索引您的整个字段。它不会被拆分成令牌。这对于使用给定名字的首选项来提升结果非常有用。一次使用WordDelimiterTokenizerFactoryStandardTokenizerFactory

您可以在此处找到有关这些标记器的更多信息:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters

在使用不同的标记器在两个筛选器中为它们编制索引后,只需使用boost query从一个字段(名字优先的字段)提升结果,如下所述:http://wiki.apache.org/solr/SolrRelevancyFAQ#How_can_I_make_.22superman.22_in_the_title_field_score_higher_than_in_the_subject_field

如果用户使用"&“字符进行搜索,则该字符应包含在搜索中,而不是用作运算符。

对于这一部分,您可以使用DisMax查询http://wiki.apache.org/solr/DisMaxQParserPlugin,或者当您发出请求时,使用"&“而不是&,您还需要使用像WhiteSpaceDelimiter这样的标记器来只保留令牌中的其他字符。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7436825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档