当前位置: 首页 > 知识库问答 >
问题:

Lucene:使用单词搜索查找结果

解翰采
2023-03-14

我试图用一个词作为查询来查找匹配项,但它似乎找不到。我正在使用标准分析仪,但找不到准确的结果。

我的索引文档是:

Document d = new Document();
d.add(new StringField("content","The quick brown fox jumps over the lazy dog"));

如果使用通配符查询:

Term term = new Term("content","The*");
Query q = new WildcardQuery(term);

它会返回内容:“敏捷的棕色狐狸跳过懒惰的狗”

如果使用术语查询:

Term term = new Term("content","The quick brown fox jumps over the lazy dog");
Query q = new TermQuery(term);

它会返回内容:“敏捷的棕色狐狸跳过懒惰的狗”

现在,我想用“狐狸”作为我的新名词

Term term= new Term("content","fox");

但是我不知道哪个是正确的查询,或者如何做。我已经尝试了QueryParser、TermQuery和MultiPhrase,但仍然没有成功。

任何帮助都会做或指导。或者只是一个简单的查询,我可以用它作为指导。我看了很多教程,但找不到合适的。我使用的是Lucene 5.0。

共有2个答案

孟杰
2023-03-14

根据您的要求,似乎最好将整个字符串标记化:

Document doc = new Document(); 

doc.Add(new Field("Contents", "The quick brown fox jumps over the lazy dog", Field.Store.NO, Field.Index.TOKENIZED));

这将使您能够搜索单个术语。

江宏深
2023-03-14

您的问题是您没有阅读Javadoc forStringField,它说:

只要使用TextField,你就会没事的。

 类似资料:
  • 我正在努力在我们的应用程序中集成Lucene。Lucene目前正在工作,例如当我搜索“上传”时,文档中有一些叫做“上传”的文本,那么它就工作了,但是当我搜索“上传”时,那么它就不工作了。有什么想法吗? 代码: 谢谢你。

  • 我的任务是使用lucene在我们的产品表中搜索。我已经创建了一个索引,正在使用带有多个字段的QueryParser进行搜索,但结果不是我所需要的。我有一个存储为LM10的产品,但如果搜索词是LM 10,我希望能够找到它,但如果搜索词是Fred LM10或Fred LM 10,它也必须能够匹配。你知道我如何在Lucene做到这一点吗。 提前谢谢

  • 问题内容: 我想搜索包含许多单词的字符串,并检索与其中任何一个匹配的文档。我的索引方法如下: 这是我的搜索方法。我不想寻找特定的词组,但是其中的任何单词。用于搜索的分析器与用于索引的分析器相同。 我是Lucene的新手。有人可以帮我吗? 问题答案: 使用会精确地尝试将短语“单词列表”与短语坡度0匹配。 如果要匹配单词列表中的 任何 术语,可以使用: 或者,您也可以使用,以便您可以要求查询词的数量的

  • 问题内容: 我正在尝试使用Apache Lucene创建可搜索的电话/本地业务目录。 我有街道名称,公司名称,电话号码等字段。我遇到的问题是,当我尝试按街道名称中包含多个单词(例如“新月”)的街道进行搜索时,没有返回结果。但是,如果我尝试仅用一个词(例如“新月”)进行搜索,那么我会得到所有想要的结果。 我正在使用以下索引数据: 我的搜索是这样的: 我尝试过将通配符查询替换为短语查询,首先将整个字符

  • 我正在使用Sitecore搜索数据库中的项目。

  • 这是我想解决的问题: 我有多个Lucene索引,每个索引包含相同数据结构的子集(它们具有相同的字段,但是字段可能存在于文档中,也可能不存在于某个索引中) 索引之间共享一个全局标识符。也就是说,如果有4个索引,最多可能有4个文档共享一个密钥。 我有一个单一的Lucene查询 我使用一起查询所有索引,并且我能够使用找出命中来自哪个子索引。到目前为止还不错,但问题是: 为了执行一个(相当复杂的)合并逻辑