Searching by Intent

When I search with Mojeek, I tend to break my search up into two, broad steps.

One, locate the relevant pool of knowledge.

For example, I might search for PBS and filter by site.

  • Search for “pbs”
  • Click on the link “See more results from »”

And, step two, search that pool for my subject.

  • Update the search terms to “ baratunde thurston”
  • Search

This works well when the pool of knowledge that I’m targeting is confined to a particular website.

What I would like to do is create my own pool on the fly.

Conceptually, I would perform a search for a broad category–step one. And then I would search within those results–step two.

I think this would address an issue where Mojeek sometimes jumbles search terms and produces unexpected results. And, I think that happens because I can’t communicate my intent to Mojeek. In my experience, I can’t effectively group terms together. And features like Focus are too cumbersome for one-off searches. So, I thought these two-step searches might be a solution. I would just need a search operator that could capture the initial search. For example, if there was a link called “Search within these results” on the first page, then that information would have to be reflected on the next search results page. This is exactly the relationship between "See more results from" and “”

I don’t have a convincing example today. But, I’ve thought about this before. And, I hope you can see the value in communicating intent to the algorithm without forcing it to guess at semantic meaning like other search engines do.

You might also think of this request as prefiltering your results or as a cascading search.


How about introducing an and and or operator? Like for example, if | is an or operator, if you want to search multiple sites, you could do something like this:


where any page on those 3 websites that include the query will be included in the search term. With this, you can do that 2-step search, creating your own pool on the fly by adding the websites on the search terms.

Having an and operator would further expand this capability. Instead of the current allin operator which requires to be written at the beginning, limiting its use, having, for example, + as an and operator, would allow something like this:

query1 query2 intitle:query3+query4||

to filter the results even more.

1 Like

This is a possibility because of Focus so an operator could theoretically create these/use the functionality on the fly. I can’t say that it would be a priority given other things being worked on, but I’ve taken a note on it.

1 Like

No. This misses the point I’m making.

I recently searched for:

adam grant doctor vaccine

Hopefully, you can recognize that I mean the person, Adam Grant, and perhaps a few keywords, doctor and vaccine.

When I search with DuckDuckGo, the results reflect the fact that I’m talking about Adam Grant.

Whereas, when I perform the same search on Mojeek, the results reflect “adam” or “doctor”. The first one hundred results don’t even place the keywords Adam and Grant together.

In this specific case, I can use the query:

"adam grant" doctor vaccine

Those keywords allow Mojeek to find relevant information.

But this doesn’t answer my original request.

There, I made the point that I cannot communicate intent or reliably group keywords together. The reason is, on the first point, Mojeek is based on lexical not semantic meaning. And, on the second point, there is no explicit grouping operator.

While in this specific case I can use double quotes to trick Mojeek into producing results relating to Grant; the same trick won’t work, for example, on:

furniture store adirondack chair

These keywords will likely be jumbled by Mojeek. And using quotes—"furniture store"—won’t give me a list of stores.

This is why I made the argument about meaning and grouping. And it is why I suggested a cascading search. Mojeek can probably find furniture stores. And it can probably find Adirondack chairs. But, without a way to group terms or communicate meaning, there is no efficient way to search for Adirondack chairs in furniture stores.

I need the ability to create a set and then limit my second search to that set.

And, in the case of the chair, it would not make sense to invest the time to create a list of stores or to retain the list in a Focus per se. In order to compete with semantic search engines, I need to be able to create the relevant set on the fly.


1 Like

By cascading search, do you mean you want to search for furniture stores first, then using those websites of furniture stores you found, you want to search for adirondack chair within them? I think that could work on my suggestion of an or operator, like this:

adirondack chair||

where you could copy paste those websites you found on the search term. Though I can see how an advanced search feature, like having checkboxes on the sites, would make it more convenient.

But how about introducing a parenthesis () operator, making it possible to do this:

(furniture store) (adirondack chair)

To directly communicate intent that “furniture store”, and its variations from semantic search and stemming, should be close together, and the same goes for “adirondack chair”. This would be simpler and faster.

What do you think of these? Did I miss your point again, or did I finally get it?