Solr lucene只搜索句子中的第一个单词 - 需要查询

时间:2013-05-10 05:59:46

标签: solr

我正在搜索仅匹配以搜索键开头的句子的数据。

例如:

search key "what"

结果:渴望一个

**what** is your name
**what** are you doing
**what** is that

etc.

我现在的表现是

Is that **what** you want 
some text before **what** 

etc.

我也在使用EdgeNGram ..但是它给了我第二个。 任何帮助表示赞赏....

3 个答案:

答案 0 :(得分:1)

我认为您正在使用WhitespaceTokenizer。您应该尝试在左端使用带有EdgeNGram的KeywordTokenizer。

如果您尝试实施自动建议,请查看Suggester组件。

答案 1 :(得分:0)

我认为您可以使用以下技巧:将以下行添加到字段定义中:

Imports System.Data
Imports MySql.Data.MySqlClient
Imports System.Configuration
Imports System.Web.Services
Partial Class _Default
    Inherits System.Web.UI.Page
    <WebMethod>
    Public Shared Function GetAreas(areaname As String) As List(Of String)
        Dim area As New List(Of String)()
        Dim con As New MySqlConnection("Data Source=182.50.133.88;port=3306;Initial Catalog=db;User Id=user;password=pwd;")



        Dim query As String = String.Format("SELECT areaName FROM areas", areaname)
        'Note: you can configure Connection string in web.config also.
        Dim cmd As New MySqlCommand(query, con)
        con.Open()
        Dim reader As MySqlDataReader = cmd.ExecuteReader()
        While reader.Read()
            area.Add(reader.GetString(0))
        End While
        Return area
    End Function
End Class

这将添加&#34; AAAA&#34;令牌到您的索引和查询。这样,您就可以匹配索引字符串的开头。

更多信息:

答案 2 :(得分:0)

您可以使用正则表达式“从查询开始” q:(name:/what.*/)会产生结果,其中名称字段以“ what”开头