gpt4 book ai didi

solr - 按词组搜索最常用的词组

转载 作者:行者123 更新时间:2023-12-03 02:04:22 26 4
gpt4 key购买 nike

我的任务并不艰巨,想了解Sphinx或Solr是解决问题的正确工具。简化示例:我在我的网站上有一个搜索字段,用于按产品描述进行搜索。以及mysql db中的下一个描述:

Id  Desc
1 this is my test document number one. also checking search within phrases.
2 this is my test document number two
3 this is another group
4 this is first group
5 this is first test
6 this is your test

当用户在搜索字段ex中键入一些文本时。他应该得到下一个结果(包含“is”的前三个短语):
“这是”,“是我的”,“第一”。

有人有任何想法怎么做吗?也许您现在有一些更好的搜索引擎可以满足我的需求?
<fieldType class="solr.TextField" name="text_auto">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ShingleFilterFactory" maxShingleSize="4" outputUnigrams="true" outputUnigramsIfNoShingles="false" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>

<field name="title" type="text_auto" indexed="true" stored="true"/>
<field name="content_autosuggest" type="text_auto" indexed="true" stored="true" multiValued="false"/>

<copyField source="title" dest="content_autosuggest"/>

最佳答案

您可以尝试使用ShingleFilter。如Wiki上的示例所示,如果将maxShingleSize和mixShingleSize都设置为2,则会得到以下信息:

this is my test document => this is, is my, my test, test document

(如果需要,请确保在带状滤波器之前使用适当的标记器和其他分析器。)

然后,您可以在此字段上进行正则表达式搜索:
shingle_field:/(is .*)|(.* is)/

应该返回所有文件。 (我相信这应该可行,因为Wiki声明:它创建 token 的组合作为单个 token 。)

使用 facet query获取计数:
shingle_field:/(is .*)|(.* is)/&facet=true&facet.field=shingle_field

(如果您不关心文档,只需要构面,则添加 rows=0。)

关于solr - 按词组搜索最常用的词组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28217371/

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