【问题标题】:Solr advanced phrase queries in HaystackHaystack 中的 Solr 高级短语查询
【发布时间】:2013-06-27 08:21:23
【问题描述】:

我希望我的用户能够在搜索框中输入“word1 word2”之类的内容,并且只接收在 word2 之前包含 word1 的文档。更好的是利用 Solr 的其他功能,例如:

  • title:"word1 word2"
  • 文本:(word1 或 word2)
  • "word1 word2"~5

我当前的 SQS 是这样设置的: searchqueryset = SearchQuerySet().filter(content=AltParser('edismax', Raw(query), pf="title^1.5 text^1"))

而且我认为,尽管使用了 Raw,但事情仍然被转义(基于我得到的结果)。

如果有更多信息有帮助,请告诉我。

谢谢! 杰克

【问题讨论】:

  • 你在逃避两个词之间的空格吗?
  • 转义是什么意思?你的意思是把空格变成“%20”吗?
  • 你能给我们看看现场的分析仪吗?

标签: django solr django-haystack


【解决方案1】:

我猜您正在查看的字段中有WhiteSpaceTokenizer

尝试查询"word1 word2" - 这不会转义空格并将短语视为不同的单词。

或者,您不能使用WhiteSpaceTokenizer,但这会将您的搜索能力限制为精确匹配——这可能不足以满足所有场景。

【讨论】:

  • 嗨 Srikanth,谢谢。我认为我正在处理的问题是 Django Haystack 特有的,以及它解析查询的方式。由于您列出的原因,我相当肯定我不想不使用 WhiteSpaceTokenizer。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
相关资源
最近更新 更多