Solr";以“开始”;及;短语;指数
我正在尝试创建一个索引,允许我根据单个单词和部分短语的“开头”进行查询 例如,给定文本“Solr";以“开始”;及;短语;指数,solr,indexing,Solr,Indexing,我正在尝试创建一个索引,允许我根据单个单词和部分短语的“开头”进行查询 例如,给定文本“blah blah stuff couple blue drums blah more blah”(注意,这基本上是使用复制字段对记录进行全文搜索),我希望能够匹配以下内容: 库伊 夫妻 布鲁夫妇 情侣蓝 蓝鼓 蓝德鲁 它不应与“成对鼓”的查询匹配 我尝试使用“text\u general”类型,但它不执行部分单词查询,例如“cou” 是否有标记器和过滤器的组合可以完成我试图做的事情?如果您的输入实际上是
blah blah stuff couple blue drums blah more blah
”(注意,这基本上是使用复制字段对记录进行全文搜索),我希望能够匹配以下内容:
- 库伊
- 夫妻
- 布鲁夫妇
- 情侣蓝
- 蓝鼓
- 蓝德鲁
是否有标记器和过滤器的组合可以完成我试图做的事情?如果您的输入实际上是一个短语,那么使用Lucene的短语搜索将排除像成对鼓点这样的查询(除非您的输入包括作为短语的“成对鼓点”)
您可能还想看看。我认为您需要使用补丁构建solr core。谢谢您提供的信息标记。不幸的是,我的意思是在全文字段中的任何给定单词上以开头。我在原始问题中添加了更多信息,以澄清我在寻找什么。我刚刚发现,使用text_general字段类型,我可以对单个单词执行通配符,对多个单词执行短语查询。这可能是“短语查询中的通配符”问题。我正在为Solr4.0研究这个问题。相关:你能把你的答案贴在这里吗:我几乎遇到了同样的问题,谢谢advance@rodi听起来我们确实遇到了类似的问题,但不幸的是,我从未找到一个可接受的解决方案。我们最终改变了需求,使之与Solr相匹配:(现在我决定拆分短语并将其与“?”连接起来,所以“我的长短语是verycomplexxxx”->文本:我的长短语是veryco*,并且匹配。您对此有何看法?
<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>
<fieldType name="fulltext2" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldType>