【发布时间】:2014-04-08 17:37:28
【问题描述】:
我正在尝试使用 solr (4.7.1) 选择查询,但我找不到任何有用的示例。我真的不明白 solr 查询背后的逻辑。 -text:, +text:, : !(-text:??)。
我想对字段“first_name”和“last_name”进行选择
http://127.0.0.1:8080/solr-4.7.1/persons/select?q=first_name:%22JOSHUA%22%20and%20+last_name:%22MCKAY%22&rows=10&sort=no_persons+asc
在 SQL 中:
select * from persons where first_name like '%JOSHUA%' and last_name like '%MCKAY%' order by no_persons asc
但结果与查询无关。它更像是一个名字:?或姓氏:?。
另外,我要使用 levenshtein 距离算法吗?我知道它类似于“~30”。
与使用简单查询相比,使用 solr 配置数据库同步时遇到的问题更少...
schema.xml:
<fields>
[....]
<field name="first_name" type="text_name" indexed="true" stored="true" multiValued="true"/>
<field name="last_name" type="text_name" indexed="true" stored="true" multiValued="true"/>
<field name="full_name" type="text_name" indexed="true" stored="true" multiValued="true"/>
<copyField source="first_name" dest="full_name"/>
<copyField source="last_name" dest="full_name"/>
[....]
</fields>
<types>
[....]
<fieldType name="text_name" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="false"/>
<filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="false"/>
</analyzer>
</fieldType>
[....]
</types>
【问题讨论】:
-
我在 schema.xml 中使用这种类型pastebin.com/5a87LsQZ