java - Lucene中如何获取以特定字母开头的记录

标签 java apache solr lucene

我有一个缓存的姓名列表,我将其存储到 Lucene 数据结构中。我想要找到名字以特定字母开头的人。

例如: 我的 list 如下。我将它们存储到 name 字段中。

foo bar
blabla foo
foo2 bar
test data

当我使用 name:f* 搜索时,它返回 foo barfoo2 barblabla foo。它检查字段中的每个单词并获取 blabla foo。但我需要获取以 f 开头的名称,它的第一个字母是 f,而不是包含以 f 开头的单词的记录,即使它们位于句子的末尾。

有什么想法吗?

最佳答案

建议使用不带标记化的字段。
另外,不要使用通配符搜索,而是使用 EdgeNGramTokenFilter这会产生 token ,并且比通配符搜索要快得多,因为它会在索引时发生。

关于java - Lucene中如何获取以特定字母开头的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17451428/

相关文章:

apache - Ajax 和管理请求通过输入 mod-rewrite 规则停止运行

java - 正则表达式用空格替换部分字符串

java - DB2 SQL 错误 : -803 when inserting into two related tables

Java CompareTo 对于不工作的对象

indexing - Solr 重新索引大型文档语料库的方法

SOLR 6.4.1 Suggester 固执的区分大小写,如何做到不区分大小写?

data-structures - Lucene (Solr/ElasticSearch) 是如何快速进行过滤词条计数的?

java - 从 Java 中的 PEM 格式文件中提取多个 X.509 证书

linux - Apache 2.4、Fedora 22 上的 Symfony2 权限问题 : 500 response on app. php、app_dev.php、config.php

sql-server - 尝试安装tomcat时出错?