gpt4 book ai didi

Solr 通配符搜索

转载 作者:行者123 更新时间:2023-12-04 11:10:33 25 4
gpt4 key购买 nike

如果我有关键字 Chris Muench 的记录,我希望能够匹配 Mue 或 Chr。我如何使用 solr 查询来做到这一点。目前我执行以下操作:

$results = $solr->search('"'.Apache_Solr_Service::escape($_GET['textsearch']).'"~100', 0, 100, array('fq' => 'type:datacollection'));

它不匹配 Mue 或 Chr,但它匹配 Muench

架构:
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="rocdocs" version="1.4">
<types>
<!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
</types>


<fields>
<field name="type" type="string" indexed="true" stored="true" required="true" />
<field name="mongo_id" type="string" indexed="true" stored="true" required="true" />
<field name="nid" type="int" indexed="true" stored="true" required="true" />
<field name="keywords" type="text_general" indexed="true" stored="false" />
</fields>

<!-- Field to use to determine and enforce document uniqueness.
Unless this field is marked with required="false", it will be a required field
-->
<uniqueKey>mongo_id</uniqueKey>

<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>keywords</defaultSearchField>
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>
</schema>

最佳答案

您需要使用 wildcard queries例如chr* 或 mue* 匹配。
这将使客户端以这种格式输入查询或在应用程序中修改它。
否则,您可以使用 solr.EdgeNGramFilterFactory 生成 token 这将匹配记录。例如chris 会生成 ch, chr, chri, chris ,因此会匹配所有这些组合。

关于Solr 通配符搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267895/

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