Search Lucene查询不搜索单词;";
我编写了一个lucene搜索程序,搜索用户在实体的每个字段中输入的所有术语。这是有效的,但现在我对“安”这个词有了异议 具体来说,我想搜索单词Search Lucene查询不搜索单词;";,search,lucene,Search,Lucene,我编写了一个lucene搜索程序,搜索用户在实体的每个字段中输入的所有术语。这是有效的,但现在我对“安”这个词有了异议 具体来说,我想搜索单词“receptions de nouvel an”,搜索顺序如下: +description:*receptions* +description:*de* +description:*nouvel* +description:*an* 这没有给我结果,但我知道应该有3个结果 MDDI/PCH新概念 2011年新概念酒店 2010年新概念酒店 当我做这样的
“receptions de nouvel an”
,搜索顺序如下:
+description:*receptions* +description:*de* +description:*nouvel* +description:*an*
这没有给我结果,但我知道应该有3个结果
+description:*receptions* +description:*de* +description:*nouvel*
我得到了预期的结果。因此,这项工作似乎有问题。“an”。
有人能告诉我这里出了什么问题以及为什么我的第一个查询不起作用吗?
提前感谢使用英语TopWords Chararray Set的Standart Analyzer的默认设置,其中还包括“a,an,the”ex。如果您希望对这些单词进行索引,则可以使用一些自定义的Chararray Set,或在停止词的blove中使用
analyzer = new StandardAnalyzer(CharArraySet.EMPTY_SET);
你查过链接了吗?谢谢,但我认为这与我的问题无关。我的查询是正确的(在我看来),第二个查询是有效的(带有“an”)。如果我错了,请随时纠正我…字段
说明的字段类型定义如何?如果标记化,您只需尝试+description:receptions de nouvel an
Yes,在搜索整个短语时,您将得到预期的结果。但这是我的程序的搜索功能,所以也应该找到以任何其他顺序(或中间有其他单词)包含这些单词的“描述”,这就是我必须以这种方式搜索的原因。谢谢!问题确实是“an”这个词被英语中的stop词漏掉了。似乎从8.0.0版开始(我还没有使用),默认构造函数被切换,这样它就不再使用英语stopwords了:是的。事实并非如此。但是,如果您继续使用Lucene的早期版本,只需创建自己的chararrayset即可。但推荐始终是核心API的最后一个版本。