gpt4 book ai didi

lucene - Lucene 中的通配符

转载 作者:行者123 更新时间:2023-12-01 02:58:20 25 4
gpt4 key购买 nike

为什么通配符查询“dog#V*”无法检索包含“dog#VVP”的文档?

以下用 Jython 为 Lucene 3.0.0 编写的代码无法检索索引文档。我错过了什么吗?

analyzer = WhitespaceAnalyzer()  
directory = FSDirectory.open(java.io.File("testindex"))
iwriter = IndexWriter(directory, analyzer, True, IndexWriter.MaxFieldLength(25000))

doc = Document()
doc.add(Field("sentence", "dog#VVP", Field.Store.YES, Field.Index.ANALYZED))
iwriter.addDocument(doc)
iwriter.close()
directory.close()

parser = QueryParser(Version.LUCENE_CURRENT, "sentence", analyzer)
directory = FSDirectory.open(java.io.File("testindex"))
isearcher = IndexSearcher(directory, True) # read-only=true

query = parser.parse("dog#V*")
hits = isearcher.search(query, None, 10).scoreDocs
print query_text + ":" + ", ".join([str(x) for x in list(hits)])

输出是:
dog#V*: 

它不返回任何东西。对于 dog#VV* 或使用除“#”以外的分隔符(我尝试过“__”和“aaa”),我看到了相同的行为。有趣的是,以下查询有效:dog#???、dog#*。

最佳答案

如果你仔细看结果

parser.parse("dog#V*")

你会看到
sentence:dog#v*

注意小写的 v!为了避免通配符查询中术语的自动小写,您必须这样做
parser.setLowercaseExpandedTerms(False)

在解析查询字符串之前。我不知道为什么默认是小写。

关于lucene - Lucene 中的通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2082656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com