我使用的solr建议组件具有以下配置:动态字段选择为Solr的建议(拼写检查)的多个术语的查询
schema.xml中
<fieldType name="textSpell" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="image_memo" type="text_general"/>
<field name="username" type="text_general"/>
<field name="image_memo" type="text_general"/>
<field name="image_text" type="text_general"/>
<!-- More fields included here -->
<field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="spell"/>
solrconfig.xml中
<searchComponent class="solr.SpellCheckComponent" name="suggest">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">spell</str>
<str name="buildOnCommit">true</str>
</lst>
</searchComponent>
<requestHandler class="org.apache.solr.handler.component.SearchHandler"
name="/suggest">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.count">6</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.maxCollations">6</str>
<str name="spellcheck.maxCollationTries">1000</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.collateParam.mm">100%</str>
</lst>
<arr name="components">
<str>suggest</str>
<str>query</str>
</arr>
</requestHandler>
正如你可以看到有一个字段spell
至于我用于建议查询。 即使对于多项查询,这种方法也很有用。
但我需要的是仅在选定的字段上进行搜索。
因此,例如我只需要有效的建议字段image_memo
和username
用户可以动态添加和删除字段进行搜索。
我知道我可以做这样的事情:
Q =(image_memo:*搜索*或image_username:*搜索*)
但这是,如果你dramtically放缓有很多字段和多项查询。
实施例:在搜索中字段memo, username, field, field1 and field2
为term, term1 and term2.
((备忘录:术语或用户名:术语 OR字段:术语 OR FIELD1:术语 OR FIELD2:术语 )和(备注:term1或用户名:term1或者字段:term1 OR FIELD1:TERM1 OR FIELD2:TERM1)AND(备忘录:TERM2 OR 用户名:TERM2 OR字段:TERM2 OR FIELD1:TERM2 OR FIELD2:TERM2))
有什么办法可以动态选择spell
这个字段。或者有什么方法可以只在多值字段中搜索特定字段
我正在使用Apach Solr 4 Alpha。
你可以发布哪些解决方案为你工作,我看到你没有接受给定的答案。在这种情况下,你可以发布答案。我面临着类似的挑战。谢谢 – nish 2013-11-26 12:20:26