2013-05-10 55 views
0

我在搜索仅与搜索关键字开头的那个句子相匹配的数据。Solr lucene仅搜索句子中的第一个单词 - need query

例:

search key "what" 

结果:所需的一种

**what** is your name 
**what** are you doing 
**what** is that 

etc. 

如何我现在得到的是

Is that **what** you want 
some text before **what** 

etc. 

我使用EdgeNGram作为well..But它给我第二个。 任何帮助赞赏....

回答

1

我想你使用的是WhitespaceTokenizer。你应该尝试在左端使用EdgeNGram的KeywordTokenizer。

如果您尝试实施自动建议,请查看Suggester组件。

+0

您好,我试图与相关建议者的链接。我只收到用户输入的那个单词。对于EX:如果我的搜索字段的值为“你的名字是什么”,如果搜索是W或WH,它只给我“什么”,如果有人搜索哟,它只给我“你的”。所以在这里我想要当W搜索我想要整个字符串和“哟” – sandy 2013-05-10 08:54:34

+0

whitespace或关键词标记没有什么区别! – sandy 2013-05-10 08:56:52

+0

Ya Suggester对令牌起作用,而不是字段值本身。我不确定为什么关键字标记器不起作用,它会保留整个值,并从前面ngram,这似乎正是你想要的。最糟糕的情况下,你可以给facet.prefix一个镜头http://wiki.apache.org/solr/SimpleFacetParameters#facet.prefix – rounak 2013-05-10 09:20:20

0

我认为你可以使用下面的技巧:下面一行添加到您的字段定义:

<charFilter class="solr.PatternReplaceCharFilterFactory" 
    pattern="^(.*)$" replacement="AAAA $1" /> 

这将增加“AAAA”令牌来索引和查询两种。这样您可以匹配索引字符串的开头。

此处了解详情:

相关问题