solr - 如何使用 NGramTokenizerFactory 或 NGramFilterFactory?

标签 solr tokenize lucene

最近在研究如何使用Solr进行存储和索引。我想做facet.prefix 搜索。使用空格标记器,“你在哪里”将被分成三个单词并建立索引。如果我搜索facet.prefix =“where are”,将不会返回结果。

我谷歌搜索并发现 NGramFilterFactory 可以帮助我。但是当我应用这个过滤器工厂时,我发现结果是“w,h,e,...,wh,..”,它按字符而不是标记词分割句子。

我使用参数 maxGramSize 和 minGramSize,设置为 1 和 3。NGramFilterFactory 工作正常吗?我应该添加一些其他参数吗?还有其他过滤器工厂可以帮助我吗?

谢谢!

最佳答案

分面只能应用于非标记化字段,例如字符串。如果您希望显示“是什么”的结果,则对该字段(或 copyField 指令)根本不使用标记器。我猜您想使用facet.prefix 进行自动补全。你可以这样做,look here .

ngramtokenizer check this out .

关于solr - 如何使用 NGramTokenizerFactory 或 NGramFilterFactory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4667322/

相关文章:

elasticsearch - 在Elasticsearch中更改文档的_type

java - 如何通过 Java API 从 apache solr 获取热门术语信息

hibernate - Solr vs HibernateSpatial vs HibernateSearch

python - Solr API 的 Python 分页

C#编程如何通过正则表达式对空格和 ","进行分词?

elasticsearch - Elasticsearch-通过大写字母将术语标记化,例如 “TheStarTech” => [The,Star,Tech]

java - 指南针在搜索查询中返回 0 行且包含 “#”(哈希字符)

java - spring-data-solr2.1.3+solr6.5.1 NoSuchMethodError : org. apache.solr.common.SolrInputDocument:方法 <init>()V 未找到

javascript - 使用空格分隔值标记字符串,除非值用单引号引起来

java - Lucene 搜索失败,出现异常 : ava. lang.IllegalStateException:字段的意外文档值类型为 NONE