【问题标题】:Solr: how to type questions search?Solr:如何键入问题搜索?
【发布时间】:2019-05-20 09:18:06
【问题描述】:

我是 solr 的新手,我正在尝试建立一个问答系统。 我已经索引了一些 Wikipedia 页面,例如 Nikola Tesla。 https://en.wikipedia.org/wiki/Nikola_Tesla

我的问题是:有可能以及如何在 Solr 中将查询键入为问题?

我将 Wikipedia 页面按“内容”(对应于 SectionTitle)拆分,所以...对于查询 pageTitle:Nikola Tesla,我的结果是:

"response":{"numFound":23,"start":0,"docs":[
{
        "sectionTitle":"First Paragraph",
        "pageTitle":"Nikola Tesla",
        "text":["Born and raised in the Austrian Empire, Tesla received an advanced education in engineering and physics in the 1870s and gained practical experience in the early 1880s working in telephony and at Continental Edison in the new electric power industry.]},
{
        "sectionTitle":"Early years",
        "pageTitle":"Nikola Tesla",
        "text":["Nikola Tesla was born an ethnic Serb in the village Smiljan, Lika county, in the Austrian Empire (present day Croatia), on 10 July [O.S. 28 June] 1856. etc..]}]
  }}

我的schema 如下:

  <field name="id" type="string" indexed="true" required="true" stored="true"/>
  <field name="pageTitle" type="text_en" indexed="true" stored="true"/>
  <field name="sectionTitle" type="text_en" indexed="true" stored="true"/>
  <field name="title" type="text_en" indexed="true" stored="true"/>
  <field name="text" type="text_general" indexed="true" stored="true"/>

是否可以将查询输入为问题?以及如何显示与问题相似的结果? 比如看上面……

如何输入查询When Nikola Tesla born?并获取段落

"sectionTitle":"Early years",
"pageTitle":"Nikola Tesla",
"text":["Nikola Tesla was born an ethnic Serb in the village Smiljan, Lika county, in the Austrian Empire (present day Croatia), on 10 July [O.S. 28 June] 1856."]

或查询Where Nikola Tesla born? / Where Nikola Tesla raised? 并获取:

“在奥地利帝国出生和长大,特斯拉获得了……”?

提前致谢。

【问题讨论】:

  • 你试过了吗:pageTitle:"Nikola Tesla 什么时候出生的?"它给你任何结果吗?
  • 要获得与问题相似的问题,您可以使用更多类似 solr 的功能
  • @Abhijit Bashetti 是的,我试过 pageTitle:“尼古拉·特斯拉什么时候出生的?”我没有得到任何结果,sectionTitle 也是一样的:“Nikola Tesla 什么时候出生?”。对于文本:“尼古拉特斯拉何时出生?”它向我显示结果,但来自其他 pageTitle,而不是来自 Nikola Tesla。
  • 是的,我的问题是关于布尔运算符和问号“?”。您的 cmets 帮助我了解了该怎么做,谢谢!

标签: search solr question-answering


【解决方案1】:

邻近搜索会查找特定距离内的字词 来自彼此。

要执行邻近搜索,请添加波浪号 ~ 和数字 值到搜索短语的末尾。例如,要搜索一个 “apache”和“jakarta”在文档中彼此相距不超过 10 个字, 使用搜索:

"jakarta apache"~10

这里所说的距离是需要的词条移动次数 匹配指定的短语。在上面的例子中,如果“apache”和 “jakarta”在一个字段中相隔 10 个空格,但出现了“apache” 在“雅加达”之前,需要 10 多个学期的移动 将这些术语一起移动并将“apache”放置在 "jakarta" 中间有一个空格。

您也可以在您的情况下尝试邻近搜索,如下所示。

text:"Nikola Tesla born?"~10

text:"Austrian Empire engineering"~10

text:"Tesla born?"~10

请参考 solr 管理工具中的图片。

对于text:"Nikola Tesla born?"~10

对于text:"Austrian Empire engineering"~10

对于text:"Tesla born?"~10,查询为"http://localhost:8983/solr/TestCore/select?q=text:"Tesla born?"~10"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多