Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr";以“开始”;及;短语;指数_Solr_Indexing - Fatal编程技术网

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
”(注意,这基本上是使用复制字段对记录进行全文搜索),我希望能够匹配以下内容:

  • 库伊
  • 夫妻
  • 布鲁夫妇
  • 情侣蓝
  • 蓝鼓
  • 蓝德鲁
它不应与“成对鼓”的查询匹配

我尝试使用“text\u general”类型,但它不执行部分单词查询,例如“cou”


是否有标记器和过滤器的组合可以完成我试图做的事情?

如果您的输入实际上是一个短语,那么使用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>